Synchronization Editor - cleanup / tidy / generalize a Template or Project?

Hi,

I have a sync project in a lab environment whose development effort has spanned three change labels, but now it's complete I want to archive it and test it in another different version of One Identity database (for consistency testing). It transports out fine, but I observed:

1. In TRANSPORT.XML, the <Header> section is quite specific to the One Identity database it was created for, including version info.

2. There is one database object which Transporter couldn't include (it doesn't display objects in the source table for that object, so I can't include it.)

3. the transport includes references to objects which were added and then removed between two commits of the same change label - for example, in the latest change label I can see this fragment even though the object it relates to was removed before the final commit.

            <Column Name="SerializationBag" Display="&lt;SerializationBag Version=&quot;1.0&quot;&gt;&#xD;&#xA;	&lt;Data Name=&quot;ScriptLanguage&quot; Type=&quot;VI.Projector.Scripting.ScriptLanguage, VI.Projector&quot;&gt;VisualBasicNet&lt;/Data&gt;&#xD;&#xA;	&lt;Data Name=&quot;GetScript&quot; Type=&quot;System.String, mscorlib&quot;&gt;if $IsDisabled$ OR $IsDeleted$ then &#xD;&#xA;	return true&#xD;&#xA;else &#xD;&#xA;	return false&#xD;&#xA;end if&lt;/Data&gt;&#xD;&#xA;	&lt;Data Name=&quot;SetScript&quot; Type=&quot;System.String, mscorlib&quot;&gt;&lt;/Data&gt;&#xD;&#xA;&lt;/SerializationBag&gt;">
               <Value>&lt;SerializationBag Version="1.0"&gt;
	&lt;Data Name="ScriptLanguage" Type="VI.Projector.Scripting.ScriptLanguage, VI.Projector"&gt;VisualBasicNet&lt;/Data&gt;
	&lt;Data Name="GetScript" Type="System.String, mscorlib"&gt;if $IsDisabled$ OR $IsDeleted$ then 
	return true
else 
	return false
end if&lt;/Data&gt;
	&lt;Data Name="SetScript" Type="System.String, mscorlib"&gt;&lt;/Data&gt;
&lt;/SerializationBag&gt;</Value>

 

I was wondering if it is possible to create a fresh export of the project which has the following properties:

  • a single generic change label, rather than one specific to the originating database.
  • contains objects inside the completed sync project only - i.e. it excludes all references to the deprecated components
  • includes both objects (including the one Transporter couldn't add).
  • can be imported into any One Identity database of a specific version or higher.

  Is this feasible? I have heard there's an option to export a sync project (or template) inside the Synchronization Editor instead of having to use Designer, but I can't find it.

Thanks in advance

Cheers

Tim

  • Just to expand on the original comment - I've enabled the save option now. But the question is still valid.

    1. The deprecated elements still exist in the export if I enable and use the save option.

    2. The sync project doesn't export the prerequisite objects configured in Manager.

    I can add the required DPR_Namespace object to a transport, but cannot add a UNSRootB object that depends on that namespace object to that transport - the transporter UI doesn't show the UNSRootB table.

  • In reply to Tim Staddon:

    1. Transport files will always containing information about the originating database. If you want to obscure the connection, use an DNS alias to connect to your database.
    2. I am still not understanding your complains about deprecated components. Did you tried to following the export instructions from the manuals and or knowledge base? https://support.oneidentity.com/technical-documents/identity-manager/7.1.2/target-system-synchronization-reference-guide/37#TOPIC-807771 and  https://support.oneidentity.com/identity-manager/kb/202875
    3. Objects, the Transporter UI doesn't add most likely have the flag No DB Transport set. You can solve that by either use the new 7.1.1+ feature to add a snapshot of an object to a change label directly from the properties dialog in Manager, ObjectBrowser or Designer. Or you change the setting of the No DB Transport flag for these objects.
    4. Transport packages and the Sync project debug file export you are mentioning are always schema dependent. So there will never be a guarantee, that this works with a newer version.

    The best way - in terms of being generic - would be to create your own sync template.

  • In reply to Markus Weiss-Ehlers:

    Hi Markus,

    #2 is not a complaint!

    Simple example: I decided I didn't need this script property anymore, but if I delete it from the UI, and commit the change, before I export a projshell file AND export out the change label, I can still find this object in both exports. Here's an example - this script property is no longer in the Sync Project Editor UI.

    <!-- Transport -->
    
    	<Column Name="SerializationBag" Display="<SerializationBag Version="1.0">
    		<Data Name="ScriptLanguage" Type="VI.Projector.Scripting.ScriptLanguage, VI.Projector">VisualBasicNet</Data>
    		<Data Name="GetScript" Type="System.String, mscorlib">if $IsDisabled$ OR $IsDeleted$ then return true&#xD;&#xA;else return false&#xD;&#xA;end if</Data>
    		<Data Name="SetScript" Type="System.String, mscorlib"></Data>&#xD;&#xA;
    	</SerializationBag>">
    	<Value>
    		<SerializationBag Version="1.0">
    			<Data Name="ScriptLanguage" Type="VI.Projector.Scripting.ScriptLanguage, VI.Projector">VisualBasicNet</Data>
    				<Data Name="GetScript" Type="System.String, mscorlib">if $IsDisabled$ OR $IsDeleted$ then return true&#xD;&#xA;else return false&#xD;&#xA;end if</Data>
    				<Data Name="SetScript" Type="System.String, mscorlib">
    			</Data>
    		</SerializationBag>
    		</Value>
    
    <!-- PROJSHELL -->
    
    	<SchemaProperty 
    		Id="CCC-ED3389DA9631B747A89266BCF541473A" Type="VI.ScriptedSchemaProperty" 
    		Name="vrtScript_IsInEffect" NameFormat="Identifier" DisplayName="vrtScript_IsInEffect" 
    		Description="Specifies whether the assignment is in effect" IsLocked="False" 
    		SchemaType="CCC-9BBCE869036FD745A07D2C382B276BE1" IsVirtual="True" IsReference="0" 
    		IsMultiValue="-1" IsUniqueKey="0" AccessConstraint="ReadOnly" MandatoryBehavior="" 
    		AutoFillBehavior="" IsSecretValue="0" IsLargeObject="0" IsAdditional="-1" IsRevisionCounter="False" 
    		IsHierarchySortCriterion="False" IsPreferredKey="False" MaximumLength="0" DataType="Boolean" 
    		DataTypeSize="0" ValueFormat="" ScriptLanguage="VisualBasicNet" 
    		GetScript="If $IsDeleted$ OR $IsDisabled$ then return True&#xD;&#xA;elsereturn False&#xD;&#xA;end if" SetScript="" />
    			

    While its presence in the expert does no real harm at all, this property is not used in any mapping, and I have no other dependencies on it. On that basis, all I want to know is,

    1. is it OK to manually delete it from the projshell file if I am 100% sure it isn't referenced anywhere in the project.

    2. would there be safe to change the name from "vrtScript_" to "vrtDeprecated_" in the projshell file, instead of renaming it this way... (which obviously I can't do because the object has already been deleted in the UI so am using a different object to illustrate)

     

     

    Finally - Thanks for the info on the No DB Transport, it was really helpful. Just one more question though: If I browse to the object in Object Browser and do this...

    It will save, presumably because "Initial Config" transport was created for Manager configuration settings and scripts in Designer. It is not the change label I used for the sync project. BUT: If I try to commit it to a change label used by a synchronization project, I get this exception:

    Error during execution of 'OnSaving' in logic module 'VI.Common.Customizer.DialogTaggedItem'.

    Is that expected behaviour? It's not a problem because I can create a new change label just for the sync export, and add the objects I need to that, and then export the change label, and use it with the PROJSHELL file to regenerate the config in the other database.

     

    Cheers

     

    Tim

  • In reply to Tim Staddon:

    In regards to the change label, as I said before the workaround is for snapshots (Assign object data) only, means you need to use a change label containing tagged changes as you cannot mix both types of content.

    Sadly, the error message for the tagged items is not complete as far as I can see. So I am unable to tell you what is going wrong but the Sync Projects need to use the change label type tagged items as far as I know.

    So you will need 2 change labels, but you can transport them at once as far as I can tell.

    In regards to the scripted property I have no clue why this is going to happen. I was unable to reproduce that in my environment but maybe my steps to reproducing that miss something essential.

    I would contact support on that matter.

    But I think they will need the version of OneIM you are using... :-)

  • In reply to Markus Weiss-Ehlers:

    Thanks again Markus, that covers everything. I am using v7.1.2 at the moment. I will wait until I see that error outside of the lab before I report it.
  • Take a look at the change label management in your source database. There you can see all related items for your transport label.