In Ivanti, Business Objects can be linked together, using a link table to store the many-many relationships between 'parent' and 'child' objects. Precision Bridge can extract the information from the link table and this information can then be used for the creation of the same object relationships on the target platform.
The #OBJECT_RELATIONSHIPS Form
An additional source form (or table) is available for Ivanti source servers and is selectable as the source for a form mapping. Unlike other forms, which represent business objects, this form represents relationships between business objects.
This form is somewhat different from a standard business object form. The following restrictions apply:
- It is only available as a source form
- Source filtering is restricted, and MUST be entered in a specific format (see below)
- Source count is not supported
- Use as a lookup source is not supported.
Available Fields
The following fields are retrieved for each relationship, and used in constructing the target record. They can be used as any other source field in assignment expressions, reference mappings, lookups, value match mappings etc.
- ID (id) This is a concatenation of the object, relationship type and related object id's
- The Parent Table (object_table_name) - This will be the same as the object table name used in the query that retrieved the information
- The Parent record ID (object_id) - The RecId of the object for which relationships are being retrieved
- The Child Object ID (related_object_id) - The RecId of the related object.
- The Relationship Type Name (relationship_type_name).
Mandatory Source Filtering
Unlike other business objects, there is a requirement to provide certain information in the source filter as to what relationships you want to retrieve. This is due to the very specific requirements of the Ivanti API that Precision Bridge uses to obtain link information.
Two things need to be provided in the source filtering:
1. A Source Query with the format:
@@QRY('<object_table_name>:<relationship name>')
The <object_table_name> value should be the name of the parent table (business object) for which you want to retrieve relationships. note that during retrieval. The <relationship type name> must be the name of a relationship where the parent table is the parent. Note that either value can be provided by a project variable rather than a hard-coded string value.
2. An Inclusion Filter that provides the Parent RecId values. This inclusion filter must use a previous migration set. The selected form mapping must have the same source as the parent table. The selected field must be the RecId.
Failure to configure the source filtering in exactly this way will result in a validation error when you apply the change - Precision Bridge will perform a test call to the Ivanti Server to check these are correct.
The source filtering will therefore extract relationships where:
- The relationship's parent object is in the table/business object given by <object_table_name> in the source filter query string.
- The relationship is named <relationship name>
- The parent object was migrated in an earlier form mapping (referenced in the inclusion filter).
This means that only ONE named relationship type can be retrieved per form mapping. However, you can define multiple form mappings to retrieve other relationships in the same project.
Please see the example below, showing retrieval of the id's of CI's that are related to the of incidents migrated earlier in the migration.
Comments
0 comments
Please sign in to leave a comment.