Hi there

This is my first post on Microsoft's TechNet Wiki, so please be kind if this article's structure is not perfect. Plus English is not my native language.

Anyway, let's get to the core of the matter.

Lately, I ran into quite an inconvenient problem while performing tests on a small SCCM 2012 Task Sequence.

For different reasons, one of the target infrastructures had SCCM 2012 RTM implemented, while the development environment I was using by the time I created the Task Sequence had SCCM 2012 SP1 implemented.
I know this is not a best practice, but some constraints (other projects testing) and sheer curiosity got me to try and test such a scenario.

The scenario can be summed up as follows :
- create a basic Task Sequence with common steps in SCCM 2012 SP1
- export it along with dependencies and contents through the new export wizard (by the way, it is a wonderful tool)
- get the resulting .zip file to an SCCM 2012 RTM infrastructure
- import the file through the import wizard

You will then notice the following :
- package(s) content gets imported perfectly
- Task Sequence import fails with the following error :

Error details :



SCCM wizard error :



The messages point to some XML content / structural problem.

When you run into this, problems are :
- this is not, as far as I know, a documented problem, or at least the documentation availability is not of common knowledge
- googling does not help
- log files unfortunately do not help much

So here are the steps I followed to troubleshoot this problem :
1) Built a new infrastructure with SCCM 2012 RTM implemented (whichever the result, this may prove useful in the future anyways)
2) Went the "brute force comparison" way :
     a) Tried importing one of the incriminated Task Sequences on this RTM infrastructure
     b) Had the displeasure of witnessing the problem
     c) Re-created the Task Sequence step by step
     d) Exported the result through the export wizard
     e) Started searching for differences through the files

At e) stage, here is what I could tell :
- package(s) files are OK
- most files are identical if it is not for meta-data core-properties files and .xml files package / Task Sequence IDs references
- the only file that really got my attention was the one located in .zip file contents : <ExportName>\SMS_TaskSequencePackage\<TS_ID>\object.xml

There is a bunch of useful tools out there to perform easy text files comparison, among which Beyond Compare. (there may be better tools, it's just I'm comfortable with that one for such operations) So I got through the object.xml files for both (SP1 and RTM) Task Sequences.

Here is what I found :
- standard, non-impacting site code, site name and package / TS ids differences
- non-impacting time stamps
- an intriguing (but nothing more as far as I can tell) section reading :

</PROPERTY.ARRAY>
      <PROPERTY NAME="__PROPERTY_COUNT" CLASSORIGIN="___SYSTEM" TYPE="sint32">
        <VALUE>56</VALUE>
      </PROPERTY>
  <PROPERTY NAME="__RELPATH" CLASSORIGIN="___SYSTEM" TYPE="string">
    
where the "VALUE" was 56 in SP1 TS and 55 in RTM TS

- a section in SP1 TS reading :

<PROPERTY NAME="IsVersionCompatible" CLASSORIGIN="SMS_PackageBaseclass" PROPAGATED="true" TYPE="boolean">
    <QUALIFIER NAME="CIMTYPE" PROPAGATED="true" TYPE="string" TOINSTANCE="true">
      <VALUE>boolean</VALUE>
    </QUALIFIER>
  </PROPERTY>

which led me to think that RTM and SP1 Task Sequences are not THAT different, since this seems to deal with positive compatibility.

- and last but not least, the thing that makes you think that you're onto something, a section starting as follows :

<VALUE><![CDATA[<sequence version="3.00"><referenceList>

I'm only providing the opening of this section, but here is the interesting part :
- the <sequence version="3.00"> bit is the same in both Task Sequences
- it starts the same way
- I'm not providing the whole section because it is not relevant as a whole. This section itself actually contains the whole Task Sequence logic in XML formalism. XML code stored in an XML section if I can make it clearer.
- but there was a difference indeed. It was right in front of me, but I wasn't sure by that time

Here are the next steps of this troubleshooting session. Here we get from "brute force" to a smarter analysis. (though comparison is still required. There is no shortcut for logic)

3) I performed a simple test to check whether RTM and SP1 Task Sequences are fundamentally incompatible or not :
     a) I created a simple, empty Task Sequence on the SP1 infrastructure
     b) Exported it through the wizard
     c) Copied the .zip file to the RTM infrastructure
     d) Tried importing the .zip through the wizard on the RTM infrastructure

And it worked. Which was a relief, because this proved that the gap in fundamental logic was not THAT big.

4) Next step involved creating a simple Task Sequence on both SP1 and RTM infrastructures :
     a) Task Sequence were identical and only had one group including one "Run Command Line" step referring to a simple, meaningless command line
     b) I then exported both Task Sequences through the wizard
     c) Got back to Beyond Compare text comparison on the Task Sequences packages object.xml files

And... Here we go for the analysis :
- the only relevant difference was exactly the same (which is not a surprise according to logical basic concepts) as in my original project testing Task Sequences
- this difference is ullustrated as follows : (this is the start of the same section I exposed previously)

Here is the RTM version :

<VALUE><![CDATA[<sequence version="3.00">
     <group name="New Group" description="">
          <step type="SMS_TaskSequence_RunCommandLineAction" name="Test" description="" runIn="WinPEandFullOS" successCodeList="0 3010">


And here is the SP1 version :

<VALUE><![CDATA[<sequence version="3.00">
    <group name="New Group" description="">
        <step type="SMS_TaskSequence_RunCommandLineAction" name="Test" description="" runIn="WinPEandFullOS" successCodeList="0 3010" runFromNet="false">

Yes! There is indeed a difference. Strange thing is, the Task Sequences are really the same from what I can see from SCCM console.

5) The last step of my troubleshooting session was :
     a) Take the original SP1 Task Sequence that had the problem
     b) Modify the object.xml file for the Task Sequence, removing the runFromNet="false" bit everytime I found it
     c) Replace the file in the wizard-exported .zip file
     d) Import the .zip file in the RTM infrastructure through the wizard

And it worked!

Now, we must take this cautiously :
- my Task Sequence was a "real-life" Task Sequence, but was not incredibly complex and did not include all of the steps types SCCM provides
- which means other steps may cause problems
- I haven't tested intensively yet whehter all scenarios covered by my Task Sequence run fine in the RTM infrastructure after such a modification
- I have no idead if this is supported in any kind of way by Microsoft. I must say I really would appreciate it if Microsoft could provide feedback on that matter

Anyway, I thought this may prove useful to some people out there and may avoid some headaches. And even if it is not supported, an incursion in SCCM Task Sequences logic seems like a worthy exercise to me.

Knowledge is valuable only if it is shared, and I thought I could share this with you.

Thanks for reading, and feel free to provide any remark / question / correction / feedback you may have.

Guillaume