Configuring Identity Management (IMAN)
The IMANConfig.xml configuration file is used to configure the identity attributes and other attributes for a type and source for a bundle sources based on SIM data types. It enables TAL to process various bundles from different authoring system and assign an identity to individual objects. The attributes are used to generate the IMAN ID. This configuration is required. The file is located at HOME\SW\Config\Applications\DataProcess\Config\Common\Templates\IMANIntegration.
PTC Arbortext Content Delivery provides the Configurator utility to assist you with the process of creating and updating this configuration file. The Configurator provides a TAL entity containing the IMAN property for these updates. The IMAN property enables you to rename or change the source loading priorities. This is done in the Sources section of the property.
The following sources are read only:
You can use the plus icon to add additional sources for your organization. This makes a copy of the PTC source and adds the new source to IMANConfig.xml. For example:
You can change the source loading priority of a source by clicking the icon beside the source, then dragging and dropping that source to the desired spot in the order:
Note that you must publish any TAL changes made in the Configurator and restart the JBoss server before those changes take effect.
For more information about the Configurator utility, see Using the Deployment Configurator Utility in the Deployment section of help.
* 
The Configurator enables you to define the primary source for your content. If you need to define additional sources, that must be done in the IMANConfig.xml file. In this case, make a copy of the PTC source, change the source name, and update the SourceID to -1
For more details, see the following sections about Configuring the Source Name in IMAN and Configuring Priority in IMAN.
Configuring the Source Name in IMAN
The bundle artifact PublishInfo.xml contains a parameter Bundle-Source to identify the bundle owner. If this property does not exist, TAL defaults to using the property orgName from the Rootobjects of the bundle source. Following is an example orgName:
In IMANConfig.xml, you must define a Source name and details about business identifying attributes for the different data types. These attributes can be common for all the types of business objects or they can differ per object. If the source is not configured, then the TAL process is likely to fail.
Using the bundle source configuration, you can usually find an object. If it is not found (as the same object is already loaded by a different source), then you can configure which sources to look up. Usually this case happens whenever two different sources have two different set of identifying attributes.
For example, consider a scenario where PARTS are loaded from a Source named SAP whose identifying attributes are marked as orgName and objNumber. However, now we are getting a part from a different source named PTC whose identifying attribute is URI. In that case you should not find any part with URI, since the same source is not available in SAP. The system is not supposed to even create a new part. The solution is to perform a cascade search.
Following is how you configure cascade search:
<Source name="com.cat.ncr">
<Type name="PARTS" CascadeSeq="SAP,PTC" >
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
</OtherAttributes>
</Type>
</Source>
For a given Type name, if the object is not found in the database using an identifying attribute then the search is done using the identifying attribute of the source provided in the cascade sequence. You must ensure that the source mentioned as the cascade sequence uses only those properties as identifying attributes (that are available as identifying or other attribute to the current source), otherwise an error occurs.
In above case if SAP's IdentifyingAttributes contain objNumber and orgName, then it is a valid use case. If it contains familyCode, then an error occurs since the source PTC does not have that attribute.
Configuring Priority in IMAN
Each bundle source is supplied with a priority to enable or disable updates to any object. A source with highest priority is authorized to make any changes to the object with a same or lowest priority source, but the reverse is not true. This is configured through the IMANConfig.xml configuration file while defining a source. Priority attributes accepts only integer values. A higher value means higher priority. If a source tries to update or delete an object that it does not own, then it must have an equal or higher priority than the current owner or the operation is ignored.
For example, a part with the name PL1 belongs to the source ABC. Whenever the PTC source tries to update the part; updates are allowed since the priority of PTC is greater than ABC. However, if ABC tries to update an object that PTC owns, that is not allowed since its priority is less than that of PTC.
Following is an example of an IMANConfig.xml configuration file:
<IMANConfig>
<Source SourceID="4" name="CSV" priority="4">
<Type name="PDFM">
<IdentifyingAttributes>
<Property name="objNumber" primary="true" reference="PDF Code|Document Code"/>
<Property name="orgName" primary="true" reference="$$ORGNAME$$"/>
<Property name="PTC_DD_LANGUAGE" reference="File Name_|Description_"/>
<Property name="SIM.authoringLanguage" reference="$$AUTHORED_DOC_LANGUAGE$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="IEXML">
<IdentifyingAttributes>
<Property name="objNumber" primary="true" reference="XML Code|Document Code"/>
<Property name="orgName" primary="true" reference="$$ORGNAME$$"/>
<Property name="PTC_DD_LANGUAGE" reference="File Name_|Description_"/>
<Property name="SIM.authoringLanguage" reference="$$AUTHORED_DOC_LANGUAGE$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="GRAPHIC">
<IdentifyingAttributes>
<Property name="objNumber" primary="true" reference="GRAPHIC Code|Document Code"/>
<Property name="orgName" primary="true" reference="$$ORGNAME$$"/>
<Property name="PTC_DD_LANGUAGE" reference="File Name_|Description_"/>
<Property name="SIM.authoringLanguage" reference="$$AUTHORED_DOC_LANGUAGE$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="PARTS">
<IdentifyingAttributes>
<Property name="objNumber" reference="Part Code"/>
<Property name="orgName" reference="orgname|$$ORGNAME$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="PI">
<IdentifyingAttributes>
<Property name="objNumber" reference="concat(Model,'_',SN)"/>
<Property name="orgName" reference="$$ORGNAME$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="BOM">
<IdentifyingAttributes>
<Property name="objNumber" reference="Object Number"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="GROUP">
<IdentifyingAttributes>
<Property name="objNumber" reference="$$Part Code"/>
<Property name="orgName" reference="$$ORGNAME$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type name="IS">
<IdentifyingAttributes>
<Property name="objNumber" reference="Parent Entity Code"/>
<Property name="orgName" reference="$$ORGNAME$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
<Type>
<IdentifyingAttributes>
<Property name="objNumber" reference="Document Code|Assembly Code"/>
<Property name="orgName" reference="$$ORGNAME$$"/>
</IdentifyingAttributes>
<OtherAttributes>
</OtherAttributes>
</Type>
</Source>
<Source SourceID="3" name="FLW" priority="3">
<Type name="PDFM">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber" reference="number"/>
<Property name="orgName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type name="IEXML">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber" reference="number"/>
<Property name="orgName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type name="SYMPTOMS">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber" reference="number"/>
<Property name="orgName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type CascadeSeq="SAP" name="PARTS">
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
<Property name="PTC_DD_LANGUAGE_TL"/>
</OtherAttributes>
</Type>
<Type name="IS">
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
<Property name="PTC_DD_LANGUAGE_TL"/>
</OtherAttributes>
</Type>
<Type name="PS">
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
<Property name="PTC_DD_LANGUAGE_TL"/>
</OtherAttributes>
</Type>
<Type name="BOM">
<IdentifyingAttributes>
<Property name="objNumber"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="uri"/>
</OtherAttributes>
</Type>
<Type name="GRAPHIC">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="orgName"/>
<Property name="CADName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type name="ILLUSTRATION">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="orgName"/>
<Property name="CADName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type name="EMBEDDEDIMG">
<IdentifyingAttributes>
<Property name="uri"/>
<Property name="PTC_DD_LANGUAGE"/>
<Property name="SIM.authoringLanguage"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="CADName"/>
<Property name="orgName"/>
<Property name="SIM.lastUpdated"/>
<Property name="SIM.lastUpdatedSrc"/>
<Property name="SIM.lastUpdatedMeta"/>
<Property name="checksum"/>
<Property name="collectedDate"/>
</OtherAttributes>
</Type>
<Type name="P2CRELATION">
<IdentifyingAttributes>
<Property name="objNumber"/>
</IdentifyingAttributes>
</Type>
<Type CascadeSeq="CSV" name="GROUP">
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
</OtherAttributes>
</Type>
<Type CascadeSeq="CSV" name="PARTSLIST">
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber" reference="number"/>
<Property name="orgName"/>
<Property name="PTC_DD_LANGUAGE_TL"/>
</OtherAttributes>
</Type>
<Type>
<IdentifyingAttributes>
<Property name="uri"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="objNumber" reference="number"/>
<Property name="orgName"/>
</OtherAttributes>
</Type>
</Source>
<Source SourceID="2" name="KIT" priority="2">
<Type>
<IdentifyingAttributes>
<Property name="objNumber"/>
<Property name="orgName"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="uri"/>
</OtherAttributes>
</Type>
</Source>
<Source SourceID="1" name="SAP" priority="1">
<Type>
<IdentifyingAttributes>
<Property name="objNumber" xpath="OBJNUMBER"/>
<Property name="orgName" xpath="ORGNAME"/>
</IdentifyingAttributes>
<OtherAttributes>
<Property name="uri"/>
</OtherAttributes>
</Type>
</Source>
</IMANConfig>