0
Answered

There is no primary object class on this image

André van der Westhuizen 9 years ago in UNIFYBroker/Microsoft Identity Manager updated by anonymous 8 years ago 21

I have created an MA for the telephone file list and when I run an export to update the telephone number I receive the following error:

The management agent controller encountered an unexpected error.
 
 "BAIL: MMS(3740): d:\bt\37281\private\source\miis\ma\extensible\export.cpp(2809): 0x8023030d (There is no primary object class on this image.)
BAIL: MMS(3740): d:\bt\37281\private\source\miis\ma\extensible\export.cpp(2046): 0x8023030d (There is no primary object class on this image.)
BAIL: MMS(3740): d:\bt\37281\private\source\miis\ma\extensible\export.cpp(521): 0x8023030d (There is no primary object class on this image.)
BAIL: MMS(3740): d:\bt\37281\private\source\miis\cntrler\cntrler.cpp(9812): 0x80230808 (The management agent run was terminated as there were unspecified management agent errors.)
BAIL: MMS(3740): d:\bt\37281\private\source\miis\cntrler\cntrler.cpp(8533): 0x80230808 (The management agent run was terminated as there were unspecified management agent errors.)
Forefront Identity Manager 4.1.3599.0"

Herewith the update to the object:

<?xml version="1.0" encoding="UTF-16"?>
<mmsml xmlns="http://www.microsoft.com/mms/mmsml/v2" step-type="export">
  <directory-entries>
<delta operation="update" dn="CN=4,OU=telephone,DC=IdentityBroker">
 <anchor encoding="base64">SAAAAEMATgA9ADQALABPAFUAPQB0AGUAbABlAHAAaABvAG4AZQAsAEQAQwA9AEkAZABlAG4AdABpAHQAeQBCAHIAbwBrAGUAcgAAAA==</anchor>
 <attr name="Mobile" operation="update" type="string" multivalued="false">
  <value operation="delete">04159876523</value>
  <value operation="add">612-555-0100</value>
 </attr>
</delta>
  </directory-entries>
</mmsml>

There is no events in the Identity Broker log files.


screenshot-1.png
screenshot-2.png
screenshot-3.png
Unify.Framework.Collections.dll
Unify.IdentityBroker.Adapter.dll
UnifyLog20150213.csv
UnifyLog20150215 - 1st dll.csv
UnifyLog20150215 - 2nd dll.csv
UnifyLog20150215 - 3rd dll.csv
UnifyLog20150216 - 4th DLL.csv
UnifyLog20150216 - adapterfile.csv
UnifyLog20150216 - Exclusion of collection.csv
UnifyLog20150216 - new collection.csv

Hi Andre,
Was there nothing in the log with the default setting or did you increase the log level? If only the default, can you change your log writers logging level to 'Verbose', rerun the operation and attach the log file?
Thanks

I found the cause of your error was the the drop file on update exports. Adding exports worked fine but update didn't for some reason. Disabling this setting in the run profile should make it work.

Issue updated and log file attached

I have enabled Verbose logging and no errors found regarding the issue. Edit the Run profile to exclude the log and run an Export again, this time receive the following error on the Object:

Internal Server Error: The connector Telephone does not support anchor modification.
DirectoryOperationException: (0) 0 Server Message: An unknown error occurred. Matched DN: CN=4,OU=telephone,DC=IdentityBrokerRootCauseException: System.DirectoryServices.Protocols.DirectoryOperationException: An unknown error occurred.
   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)
   at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)
   at Microsoft.IdentityManagement.Connector.GenericLdap.Channel.DirectoryContext.UpdateObject(IDirectoryAttributesCollection directoryAttributes, DirectoryControl[] directoryControls)
   at Microsoft.IdentityManagement.Connector.GenericLdap.Proxy.ExportUpdate.UpdateObject()
   at Microsoft.IdentityManagement.Connector.GenericLdap.Proxy.ExportUpdate.ExportObject(CSEntryChange entryChange)

receive the following error in the Identity Broker logs:

20150213,01:53:23,UNIFY Identity Broker,Adapter engine,Information,"Request for entities.
Request for Base entities under CN=4,OU=telephone,DC=IdentityBroker completed. Duration: 00:00:00.0799999",Verbose
20150213,01:53:23,UNIFY Identity Broker,Adapter,Information,"Adapter request to update entity to adapter space.
Adapter request to update entity e1532360-d27a-468f-88d7-0da8b83a42dc to adapter Telephone (b88d045a-7cc0-42eb-9a02-1ac2054d8146).",Verbose
20150213,01:53:23,UNIFY Identity Broker,Connector,Information,"Request to modify anchor for entity.
Request to modify anchor for entity 4 to 4 from connector Telephone.",Normal
20150213,01:53:23,UNIFY Identity Broker,Connector,Warning,"Modify anchor for entity failed.
Modify anchor for entity 4 to 4 from connector Telephone failed with reason The connector Telephone does not support anchor modification.. Duration: 00:00:00
Error details:
System.NotSupportedException: The connector Telephone does not support anchor modification.
   at Unify.Product.IdentityBroker.ConnectorToModifyAnchorConnectorBridge.ModifyAnchor(MultiKeyValue`1 oldKey, MultiKeyValue`1 newKey)
   at Unify.Product.IdentityBroker.EventNotifierModifyAnchorConnectorDecorator.ModifyAnchor(MultiKeyValue`1 oldKey, MultiKeyValue`1 newKey)
   at Unify.Product.IdentityBroker.Adapter.<>c__DisplayClasse3.<PrivateUpdateEntities>b__d9(IEntity providedEntity)
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor)
   at Unify.Product.IdentityBroker.Adapter.<PrivateUpdateEntities>d__eb.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<SaveEntitiesAndUpdateContainers>d__cf.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntitiesAsync>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntityAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntityAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.AdapterNotifierDecorator.<UpdateEntityAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.ModifyRequestHandler.<HandleRequest>d__0.MoveNext()",Normal
20150213,01:53:23,UNIFY Identity Broker,Adapter,Warning,"Adapter request to update entity to adapter space failed.
Adapter request to update entity e1532360-d27a-468f-88d7-0da8b83a42dc to adapter Telephone (b88d045a-7cc0-42eb-9a02-1ac2054d8146) failed with reason The connector Telephone does not support anchor modification.. Duration: 00:00:00.0350003
Error details:
System.NotSupportedException: The connector Telephone does not support anchor modification.
   at Unify.Product.IdentityBroker.ConnectorToModifyAnchorConnectorBridge.ModifyAnchor(MultiKeyValue`1 oldKey, MultiKeyValue`1 newKey)
   at Unify.Product.IdentityBroker.EventNotifierModifyAnchorConnectorDecorator.ModifyAnchor(MultiKeyValue`1 oldKey, MultiKeyValue`1 newKey)
   at Unify.Product.IdentityBroker.Adapter.<>c__DisplayClasse3.<PrivateUpdateEntities>b__d9(IEntity providedEntity)
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor)
   at Unify.Product.IdentityBroker.Adapter.<PrivateUpdateEntities>d__eb.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<SaveEntitiesAndUpdateContainers>d__cf.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntitiesAsync>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntityAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.Adapter.<UpdateEntityAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.AdapterNotifierDecorator.<UpdateEntityAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Unify.Product.IdentityBroker.ModifyRequestHandler.<HandleRequest>d__0.MoveNext()",Verbose

Identity Broker log attached

The error message your getting comes from the connector and indicates an attempt to modify a field marked 'key' was made. I don't have access to the connector your using but the CSV connector returns the same message when I try to modify a 'key' field. Check your connector and make sure the schema fields your trying to modify are setup correctly.

It's very strange as the attribute being updated is not set as a key.

The update is to Mobile and only EmployeeID is set as the key as per:

I've attached a test DLL. Can you place it in the IdB directory like the patch DLL from yesterday and run the export again? It will break stuff so make sure IdB is setup for the export before you add the test DLL. Attach the log file that is generated. Hopefully an exception will be logged that will help figure out whats going on.

Also, can I get a screenshot of your management agents pending exports screen and the connector space object properties for the pending export causing the issue (CN=4)?

Thanks.

Here 2 more test DLLs if the first one doesn't throw an exception with a message containing "DEBUG1302" do the same with "other" and then "object" if no message is being logged. Only use one at a time and remember to remove the "_xxx" part of the file names.
Thanks.

I have done as instructed and have cleared the logs with each log. I have attached the log files as requested. I didn't see the message "DEBUG1302" as described in post.

Herewith the Pending Exports:

Here's another DLL. Use this one with the Unify.Framework.Collections.dll from Friday. If an exception is logged with "DEBUG1302:ArrayEqualityComparer: pass(equal)" as the message, delete the Unify.Framework.Collections.dll, restart the service, and run the operation again.

New log file after inclusion of the new dll

Log file with the exclusion of the collection file

The latest one with the dll placed in the correct folder and the message contains the words from the previous posts.

Added an updated Unify.Framework.Collections.dll to replace the old version. It should log a "DEBUG1602" exception with a lot more detail than the last one. Also, delete the adapter DLL for this one. If nothing gets logged add it back, but I don't think its needed anymore.

From the details in the log, it looks like the Telephone connector was created with a string type EmployeeID and at some point after creating the FIM MA this was changed to integer type. Is this the case? If so, change the field type back to String or if EmployeeID must be a integer, clear the connector and remake the management agent.

Have cleared the connector and re-created the MA and could export a value.