3.1.6.1.4.2 Creation
If iAttributeList was not provided as an argument, then an iAttributeList MUST be constructed that MUST contain the names of all RoutingLink ADM element attributes listed in section 3.1.6.20.5.
Let SiteLinkAttributeList be a list of mSMQSiteLink attribute names, initialized to be empty. For each mSMQSiteLink attribute listed in the following table, if the corresponding RoutingLink ADM element attribute name appears in iAttributeList and that attribute is populated in iDirectoryObject, add the mSMQSiteLink attribute name to SiteLinkAttributeList and compute the value for the attribute as shown. RoutingLink ADM element attribute names that appear in iAttributeList but do not appear in the following table or in subsections referenced by the table MUST be ignored.
mSMQSiteLink attribute
Attribute value computation
Directory string transformed from iDirectoryObject.Description
Integer copied from iDirectoryObject.ActualCost
mSMQSite1 ([MS-ADA2] section 2.574)
Computed from iDirectoryObject.Site1Identifier. See section 3.1.6.1.4.4.
mSMQSite2 ([MS-ADA2] section 2.575)
Computed from iDirectoryObject.Site2Identifier. See section 3.1.6.1.4.5.
mSMQSiteGates ([MS-ADA2] section 2.577)
Computed from iDirectoryObject.SiteGateIdentifierList. See section 3.1.6.1.4.6.
A Create Object Using LDAP (section 3.1.6.12) event MUST be generated with the following arguments:
iParentPath := "CN=MsmqServices, CN=Services, CN=Configuration, <root>", where <root> is as specified in section 2.2.1.
iChildName := a string composed from the values of iDirectoryObject.Site1Identifier and iDirectoryObject.Site2Identifier. The two GUIDs MUST be converted to curly braced GUID string form ([MS-DTYP] section 2.3.4.3); next, they MUST be compacted by removing all characters that are not hexadecimal digits; finally, the string for Site2 MUST be appended to the string for Site1.
iObjectClass := "mSMQSiteLink"
iAttributes := a list of name-value pairs consisting of the attribute names in SiteLinkAttributeList and the corresponding values, as computed in step 2.
If the Create Object Using LDAP event returns an rStatus that is not DirectoryOperationResult.Success, rStatus MUST be set to the rStatus returned by the Create Object Using LDAP event, rObjectGUID is undefined, and processing MUST end. Otherwise, rObjectGuid is set to the rObjectGuid returned by the Create Object Using LDAP event.
rStatus MUST be set to DirectoryOperationResult.Success, and processing MUST end.