Multicore at assignment time for ACDC
I thought Multicore could be set during assignment and we went ahead like this for 

https://cmsweb.cern.ch/reqmgr2/fetch?rid=mcremone_recovery-3-fabozzi_Run2016H-v1-ZeroBiasIsolatedBunch0-09Nov2016_8023__161211_012840_7645

but it did not work. This was assigned with 

{'AcquisitionEra': u'Run2016H',
 'CustodialSites': [],
 'Dashboard': 'reprocessing',
 'MaxMergeEvents': 50000,
 'MaxMergeSize': 4294967296,
 'MaxVSize': 4294967296,
 'Memory': 50000,
 'MergedLFNBase': u'/store/data',
 'MinMergeSize': 2147483648,
 'Multicore': 24,
 'ProcessingString': u'09Nov2016',
 'ProcessingVersion': 1,
 'SiteBlacklist': [],
 'SiteWhitelist': ['T2_US_Nebraska'],
 'SoftTimeout': 159600,
 'Teamproduction': 'checked',
 'TrustSitelists': True,
 'UnmergedLFNBase': '/store/unmerged',
 'action': 'Assign',
 'checkboxmcremone_recovery-3-fabozzi_Run2016H-v1-ZeroBiasIsolatedBunch0-09Nov2016_8023__161211_012840_7645': 'checked',
 'execute': True}

so, is this supposed to work ?
FYI @mcremone
diff --git a/src/python/WMCore/WMSpec/WMWorkload.py b/src/python/WMCore/WMSpec/WMWorkload.py
index 5b89dbf90..6ce0d03c1 100644
--- a/src/python/WMCore/WMSpec/WMWorkload.py
+++ b/src/python/WMCore/WMSpec/WMWorkload.py
@@ -628,17 +628,31 @@ class WMWorkloadHelper(PersistencyHelper):
 
         return
 
-    def setCoresAndStreams(self, cores, nStreams):
+    def setCoresAndStreams(self, cores, nStreams, initialTask=None):
         """
-        _setCores_
+        _setCoresAndStreams_
 
-        Update number of cores and event streams for each task in the spec
+        Update the number of cores and event streams for each task in the spec.
+
+        One can update only the number of cores, which will set the number of streams to 0 (default).
+        However, updating only the number of streams is not allowed, it's coupled to # of cores.
+
+        :param cores: number of cores. Can be either an integer or a dict key'ed by taskname
+        :param nStreams: number of streams. Can be either an integer or a dict key'ed by taskname
+        :param initialTask: parent task object
         """
         if not cores:
             return
 
-        for task in self.taskIterator():
+        if initialTask:
+            taskIterator = initialTask.childTaskIterator()
+        else:
+            taskIterator = self.taskIterator()
+
+        for task in taskIterator:
             task.setNumberOfCores(cores, nStreams)
+            self.setCoresAndStreams(cores, nStreams, task)
+
         return
 
     def setMemory(self, memory):
['src/python/WMCore/WMSpec/WMWorkload.py']