This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

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="<SerializationBag Version="1.0">&#xD;&#xA;	<Data Name="ScriptLanguage" Type="VI.Projector.Scripting.ScriptLanguage, VI.Projector">VisualBasicNet</Data>&#xD;&#xA;	<Data Name="GetScript" Type="System.String, mscorlib">if $IsDisabled$ OR $IsDeleted$ then &#xD;&#xA;	return true&#xD;&#xA;else &#xD;&#xA;	return false&#xD;&#xA;end if</Data>&#xD;&#xA;	<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
else 
	return false
end if</Data>
	<Data Name="SetScript" Type="System.String, mscorlib"></Data>
</SerializationBag></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

Parents
  • 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

Reply
  • 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

Children
No Data