OVERVIEW / PURPOSE / GOAL

The goal of this wiki page is to discuss how to troubleshoot the extension-dll-exception, ObjectAlreadyExistsException. 

PROBLEM DESCRIPTION

Recently worked an issue where we had a single object that was receiving an extension-dll-exception error during a full or delta synchronization.  To understand what is happening, you will need to click on the extension-dll-exception hyperlink to review the Connector Space Object Properties window.  For this instance of the extension-dll-exception you will see the Extension rule is provisioning. 



Drilling down further, you will want to click on the Stack Trace button.  Here, you will see the ObjectAlreadyExistsException.  You will notice the DN of the object, and the name of the target management agent.

CAUSE

The ObjectAlreadyExistsException occurs because the object is provisioning instead of joining during the synchronization process.   Below you will different areas to check to see if you can identify why the object is not joining.

TROUBLESHOOTING INFORMATION

Now let's understand where we need to look to be able to help identify the problem, or even to resolve the issue.  In this section, I will be covering different areas to review to assist you.

UNDERSTANDING MY JOIN RULES

A join rule is set in the management agent.  It is where you select an attribute(s) that identify a unique identifier for the connector space object to join to an existing metaverse object.  If there is no metaverse object, the object will not join.  To check the join rules configured in your environment follow the steps outlined below:

 

  1. Open the Synchronization Service Manager Console
  2. Select Management Agents then the Target Management Agent
  3. From the Actions menu, select Properties ( CTRL+P )
  4. Select Configure Join and Projection Rules
  5. Review the Join Rule(s) configured in this management agent
    1. You may want to write down the attributes mentioned in the Join Rule(s) to be able to have them noted when you review the object.

 

VALIDATING THE JOIN ATTRIBUTE

If you do not know what attribute(s) are configured in the Join Rules, then I would recommend starting with the section above "Understanding my Join Rules".  Once you have done that, then we can move on and validate that the objects have the same value for joining.  We can do that through the following steps:

*NOTE: You will need to know the DN of the object in question to search for the object

  1. Open the Synchronization Service Manager Console
  2. Select Management Agents then the Target Management Agent
  3. From the Actions menu, select Search Connector Space
  4. Change the Scope to RDN and enter the DN of the object in the text box
  5. Click Search
  6. How many objects is returned from your search?
    1. The expected return is one object.  If you have more than one object returned in the Connector Space, then this is an indication that you have duplicate objects in the Connector Space.  It is a good idea to resolve the duplicate object issue, but it may not be the total cause of the issue. 
    2. What is the value of the attribute configured to Join in the Join and Projection Rules?
      1. Now repeat steps 1-4 on the Source Management Agent
      2. Review the attribute configured to Join in the Join and Projection Rules. 
      3. Do the values match?

 If the values do match, then the ObjectAlreadyExistsException is occurring for another reason.  If the values do not match, then this is where we start, as the value(s) for the attribute(s) configured for joining need to match to allow the objects to join.  If the value(s) do not match, the Synchronization Service Engine will attempt to provision a new object.

CONNECTED TO A DIFFERENT METAVERSE OBJECT

There are situations that we have seen in support where there are two different Metaverse objects and the Source Object is connected to one Metaverse object, and the Target Object is connected to the other Metaverse object.  Since there is no join here, the Synchronization Service Engine will attempt to provision the object.

You can do a Metaverse search to check and see if you have more than one of the object in the Metaverse. 

VALUES MATCH BUT NOT CONNECTED

If after reviewing the objects in each of the connector spaces, you realize that they match, but the Target object is not connected, then let's see if we can understand why it is not connected.

The best way to accomplish this is to Preview the object.  You can accomplish this through the following steps:

*NOTE: You will need to know the DN of the object in question to search for the object

  1. Open the Synchronization Service Manager Console
  2. Select Management Agents then the Target Management Agent
  3. From the Actions menu, select Search Connector Space
  4. Change the Scope to RDN and enter the DN of the object in the text box
  5. Click Search
  6. Double click on the object, or click the Properties button
  7. Click the Preview button
  8. Leave the radio button beside Full Synchronization
  9. Click Generate Preview
  10. Examine the results
    1. Is the object filtered?  If so, you will need to understand your Connector Filter Rules to understand why it is filtered.  ( You can find great information on Connector Filter Rules in the Help File. )
    2. Review the Join and Projection Rules
      1. In some cases, you will find an (...) elipsis button over towards the right that might give more information.
        For example, the Data Source Attribute that you chose to use in your Join Rules Configuration may be a multi-valued attribute in the Connected Data Source and you are joining it to a Single Valued Attribute in the Metaverse.  If the multi-valued attribute has more than one value in it, it will not join to the Single Valued Metaverse attribute.
        A good example of this would be where the Connected Data Source is Sun One.   You decided to use UID, which is a multi-valued attribute and join it to accountName which is a Single Valued Attribute.  This will work ok, as long as there is only one value in the UID attribute.  If there are two, it will not join.
    3. Did it error out?  What is the error?

SEE ALSO

FIM Landing Page: Resource Wiki Page Index
MSDN - ObjectAlreadyExistsException
TECHNET - ObjectAlreadyExistsException