3.1.6.9 Resolve Distribution List

This event MUST be generated with the following arguments:

  • iDLFormatName: A distribution list format name as specified in [MS-MQMQ] section 2.1.5.

Return Values

  • rStatus: A status code that indicates success or failure.

  • rFormatNameCollection: A list of queue format names. This value is defined only if rStatus has a value of DirectoryOperationResult.Success.

The algorithm MUST perform the following processing steps to resolve a queue alias:

  1. Instantiate a new list referred to as newDistinguishedNameCollection.

  2. A Get Object Properties Using LDAP (section 3.1.6.14) event MUST be generated with the following arguments:

    • iGuid := the DistributionListGuid portion of iDLFormatName, as specified in [MS-MQMQ] section 2.1.5

    • iAttributes := a list of attribute names consisting of one element, "member"

  3. If the Get Object Properties Using LDAP event returns an rStatus that is not DirectoryOperationResult.Success, rStatus MUST be set to the rStatus returned by the Get Object Properties Using LDAP event, rFormatNameCollection is undefined, and processing MUST end.

  4. Copy the values returned by the Get Object Properties Using LDAP event for the member attribute into newDistinguishedNameCollection.

  5. For each distinguished name dName in newDistinguishedNameCollection:

    1. Generate a Get Object Properties Using LDAP (section 3.1.6.14) event with the following arguments:

      • iPath := dName

      • iAttributes := a list of attribute names consisting of two elements, "objectClass" and "objectGuid"

    2. If the Get Object Properties Using LDAP event returns an rStatus that is not DirectoryOperationResult.Success, rStatus MUST be set to the rStatus returned by the Get Object Properties Using LDAP event, rFormatNameCollection is undefined, and processing MUST end.

    3. Let LoopGuid be a GUID variable, initialized to the value returned by the Get Object Properties Using LDAP event in rValues for the objectGuid attribute.

    4. If the value returned by the Get Object Properties Using LDAP event in rValues for the objectClass attribute is "mSMQQueue", construct a public format name, as specified in [MS-MQMQ] section 2.1.3, where QueueGuid is the value of LoopGuid, and add the format name to rFormatNameCollection.

    5. Else if the value returned by the Get Object Properties Using LDAP event in rValues for the objectClass attribute is "mSMQ-Custom-Recipient", perform the following steps:

      1. Generate a Resolve Queue Alias (section 3.1.6.8) event with the following arguments:

        • iFullPath := dName

      2. If the rStatus returned by the Resolve Queue Alias event is DirectoryOperationResult.Success, add the returned rFormatName to rFormatNameCollection.

      3. Else rStatus MUST be set to DirectoryOperationResult.GenericError, and processing MUST end.

    6. Else if the value returned by the Get Object Properties Using LDAP event in rValues for the objectClass attribute is "group", perform the following steps:

      1. Recursively generate a Resolve Distribution List event with the following arguments:

        • iDLFormatName := a distribution list format name constructed as specified in [MS-MQMQ] section 2.1.5, where DistributionListGuid is the value of LoopGuid

      2. If the rStatus returned by the Resolve DistributionList event is DirectoryOperationResult.Success, add the rFormatNameCollection returned by the recursive Resolve Distribution List event to rFormatNameCollection.

      3. Else rStatus MUST be set to the rStatus returned by the recursive Resolve Distribution List event, and processing MUST end.

    7. Else rStatus MUST be set to DirectoryOperationResult.GenericError, and processing MUST end.

  6. rStatus MUST be set to DirectoryOperationResult.Success, and processing MUST end.