0
Fixed

MOSS List Connector error when modifying multivalue user lookup field

Matthew Clark 7 years ago in UNIFYBroker/Microsoft SharePoint • updated by anonymous 3 years ago 6

Updates to the MOSS List connector are failing. I have attempted to update the Author and the Description field. Error message:

The extensible extension returned an unsupported error.
The stack trace is:

"System.Exception: Error occurred when attempting to save entity with distinguished name

UID=f2ef4a06-c8fb-4c2e-a354-16ae7eb227d2

Error:

Object reference not set to an instance of an object.
at Unify.Communicators.ValuesToJoinedLookupAdapter.Transform(IEnumerable`1 sourceValue)
at Unify.Communicators.Moss2007ListWebServiceCommunicatorBase.GetBatch(IEnumerable`1 data)
at Unify.Communicators.Moss2007ListWebServiceCommunicatorBase.ModifyListItemAndReturnUpdates(IEnumerable`1 data)
at Unify.Communicators.Moss2007ListWebServiceCommunicatorBase.ModifyListItemAndReturnId(IEnumerable`1 data)
at Unify.Connectors.MossListConnector.SaveEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.EventNotifierUpdatingConnectorDecorator.UpdateEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.Adapter.UpdateEntities(IEnumerable`1 entities, Boolean reflect)
at Unify.Product.IdentityBroker.Adapter.UpdateEntity(IAdapterEntity entity, Boolean reflect)
at Unify.Product.IdentityBroker.Adapter.UpdateEntity(IAdapterEntity entity)
at Unify.Product.IdentityBroker.AdapterNotifierDecoratorBase`1.UpdateEntity(IAdapterEntity entityToSave)
at Unify.Product.IdentityBroker.LDIFAdapterBase.ExportChanges(ExportedLDIFForAdapter exportedLdifForAdapter)
at SyncInvokeExportChanges(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at Unify.Product.IdentityBroker.IdentityBrokerManagementAgentProxy.ExportEntry(ModificationType modificationType, String[] changedAttributes, CSEntry csentry)
Forefront Identity Manager 4.1.2273.0"

See screenshot for attempted modification.


List Update.png
Unify.Product.IdentityBroker.AdapterEnginePlugInKey.extensibility.config.xml
Unify.Product.IdentityBroker.ConnectorEnginePlugInKey.extensibility.config.xml
Affected Versions:
Fixed by Version:

Marking fields as non-readonly does not seem to have fixed this issue. Current config attached.

Adam, the next build of the connector will have the fix for empty values. Can you confirm the BCE solution to see if the above message is a regression or not?

I have fixed the above error which was happening because it was incorrectly handling the null in a multivalue. I have also confirmed multivalue handling is correct for choice type fields.

There is another error occurring when the field is a multi-value lookup. If you export a value that does not satisfy the lookup, you correctly get an error saying the lookup has failed. However, attempting to export a correct value throws the following error:

System.Exception: Error occurred when attempting to save entity with distinguished name

UID=153db82a-8d9c-4236-b3aa-003c3abb8fcb

Error:

Error returned from SharePoint when attempting to modify the list:
Error Code: 0x81020015
Error Text: Save Conflict

Your changes conflict with those made concurrently by another user. If you want your changes to be applied, click Back in your Web browser, refresh the page, and resubmit your changes.
at Unify.Communicators.Moss2007ListWebServiceCommunicatorBase.ModifyListItemAndReturnId(IEnumerable`1 data)
at Unify.Connectors.MossListConnector.SaveEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.EventNotifierUpdatingConnectorDecorator.UpdateEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.Adapter.UpdateEntities(IEnumerable`1 entities, Boolean reflect)
at Unify.Product.IdentityBroker.Adapter.UpdateEntity(IAdapterEntity entity, Boolean reflect)
at Unify.Product.IdentityBroker.Adapter.UpdateEntity(IAdapterEntity entity)
at Unify.Product.IdentityBroker.AdapterNotifierDecoratorBase`1.UpdateEntity(IAdapterEntity entityToSave)
at Unify.Product.IdentityBroker.LDIFAdapterBase.ExportChanges(ExportedLDIFForAdapter exportedLdifForAdapter)
at SyncInvokeExportChanges(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at Unify.Product.IdentityBroker.IdentityBrokerManagementAgentProxy.ExportEntry(ModificationType modificationType, String[] changedAttributes, CSEntry csentry)

This may not be a regression however, and it may be a new feature of the connector to correctly handle this

Confirmed that the field in use was not multi-valued.

As this behaviour is not a regression, moved to v4.1

The SharePoint connector for FIM only manages Users, Groups and Contacts - it does not manage lists. As such, marked as Unassigned