Identity Broker Forum
Welcome to the community forum for Identity Broker.
Browse the knowledge base, ask questions directly to the product group, or leverage the community to get answers. Leave ideas for new features and vote for the features or bug fixes you want most.
MOSS List Connector error when modifying multivalue user lookup field
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
Copy functionality for connectors and adapters
In order to assist in the configuration of larger amounts of connectors and adapters, a copy function should be added. Consider being able to create multiple copies of a connector and adapter.
Tony has already done the method on the service for connectors, method will need to be added for the adapter engine.
Please also allow for copy to csv and copy to placeholder. Possibly even copy to any other type.
In future versions, some smarter options for configuring multiple connectors and adapters may be considered, such as a mass configuration wizard.
Illegal DN Template of CN=Surname,FirstName,DC=organization not validated
The validation message for the illegal DN template of:
CN=Surname,FirstName,DC=organization
Is not descriptive of the problem, namely:
System.Core: System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) at Unify.Product.IdentityBroker.TemplateDistinguishedNameCompiler`2.ComponentGenerate(TemplateDistinguishedNameComponent component) at Unify.Product.IdentityBroker.TemplateDistinguishedNameCompiler`2.CreateComponent(IList`1 factoryInformation) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Unify.Framework.IO.DistinguishedName.GetStringValue() at Unify.Product.IdentityBroker.Repository.EntityDistinguishedNameMultiValueDataUtility`1.ConvertValueToString(DistinguishedNameValue value) at Unify.Product.IdentityBroker.Repository.StringBasedMultiValueDataUtilityBase`3.GetEntityValue(__EntityValueInsertRow entityValue, TBaseValue baseValue) at Unify.Product.IdentityBroker.Repository.EntityMultiValueDataUtilityBase`3.<>c__DisplayClass1.<CreateEntityValue>b__0(TBaseValue baseValue, Int32 index) at System.Linq.Enumerable.<SelectIterator>d__7`2.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor) at Unify.Product.IdentityBroker.Repository.KnownEntityContextBase`4.InsertItems(HashSet`1 addedItems, EntityDataContext sourceContext, SqlConnection connection) at Unify.Framework.Data.LinqContextConversionBase`4.SubmitChanges() at Unify.Product.IdentityBroker.Adapter.<>c__DisplayClassf6.<ReflectPage>b__f3() at Unify.Framework.ParallelGate.ParallelGateJob.RunBase() at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state)
Improve error message or remove issue with gtrSecurePassword being present but not populated
If an empty gtrSecurePassword attribute is present in a communicator element (ie. gtrSecurePassword=""), the below error message is thrown to the Event Viewer. This error message should be made more specific. The better solution would be to change the method to deal with an empty value.
—
Error occurred in module: Connectors
The following error occurred:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast)
at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
at System.Security.Cryptography.CryptoStream.FlushFinalBlock()
at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Stream.Dispose()
at Unify.Framework.SecureStringExtensions.WorkerDecryptString(String encryptedString)
at Unify.Framework.SecureStringExtensions.GetAttributeSecureString(XElement workerInformation, XName attributeName, String defaultValue)
at Unify.Framework.Chris21GtrWorkerFactory.CreateComponent(XElement workerElement)
at Unify.Connectors.Chris21GtrConnectorFactoryBase`3.CreateComponent(IMultiKeyedConnectorFactoryInformation factoryInformation)
at Unify.Framework.PlugInGeneratorBase`4.CreateComponent(TFactoryInfo factoryInformation)
at Unify.Framework.ConnectorEngineConnectorGenerator.CreateComponent(IMultiKeyedConnectorFactoryInformation factoryInformation)
at Unify.Framework.ConnectorGenerator.CreateComponent(IConnectorGeneratorInformation factoryInformation)
at Unify.Framework.PollingConnectorEngineConfigurationFactory.CreateConnectorConfigurationBase(XElement xmlConfiguration, IConnectorHelper connectorHelper, ITiming pollingTiming, INotificationMessageService messageService, ITiming getAllEntitiesTiming, IConnectorGroup connectorGroup)
at Unify.Framework.PollingConnectorConfigurationFactoryBase`2.CreateComponent(IConnectorConfigurationFactoryInformation`1 factoryInformation)
at Unify.Framework.PlugInGeneratorBase`4.CreateComponent(TFactoryInfo factoryInformation)
at Unify.Framework.ConnectorConfigurationGeneratorBase`4.CreateConnectorConfigurationFromNode(THelper connectorHelper, XElement connectorNode, TConnectorConfigurationCollection connectorConfigurationCollection, IConnectorGroup connectorGroup)
at Unify.Framework.ConnectorConfigurationGeneratorBase`4.CreateConnectorConfigurationCollection(XElement xmlCollection, THelper connectorHelper)
at Unify.Framework.ConnectorEngine.Initialize()
at Unify.Framework.UnifyEngine.Initialize()
Quotes within a string importing to CSV connector
A string surrounded by double quotes written to csv
"text"
get written to the file as
""text""
and imported back into the connector as the first.
This string
<Email address="aaagu3@domain.com" />
gets written to the csv with double quotes
<Email address=""aaagu3@domain.com"" />
however when imported back to the connector the double quotes persist.
MOSS List and 2007 User Profile schema retrieval does not work
Due to IDB-799, the schema retrieval for MOSS List and 2007 User Profile does not work:
Unable to cast object of type 'Unify.Product.IdentityBroker.EventNotifierConnectorDecorator' to type 'Unify.Connectors.MossListConnector'.
As a workaround, the connector factories should call CreateComponent to recreate the connector in the schema retrieval rather than relying on the connector repository.
Review SharePoint fixed schemas
As per our discussion - the SharePoint2010UserProfileConnector and 2007 User Profile connector requires an account field to be the first key for ModifyAnchor to work.
A determination should be made about whether the AccountName field in SharePoint can change, and if so whether the current field name can be retrieved.
This raises a question about the concrete requirements for a fixed schema in a larger sense, and what a fixed schema is event meant to be.
There are a number of ways of potentially thinking about fixed schemas:
e.g.
- A fixed schema field is a field that cannot be changed from a concrete/constant field defined in IDB
- A fixed schema field is a field that must be present, and needs to be requested from the target identity management store.
- A fixed schema field is a field which must be a key or must have a name, or must be readonly etc., but all other values can change
- A fixed schema field is there to help, and that takes precedence over whether it doesn't necessarily need to be in the schema (but will always be in the target store).
etc. etc.
Handling of Specific list request type
The Chris21ListRequest enumerable allows for the handling of "Specific" list requests, denoted by the value "S" being sent to Chris21. This seems to mean that only fields present in the schema will be returned. The connector currently throws a "not supported" exception in the case where the connector is configured in this way.
"Default" and "All" type retrieval are used in current Chris21 configurations without any issues, so this is a minor issue to revisited at some stage. Until then, it may be worth commenting the "Specific" type out of the enumerable so it is not selectable via the UI.
Estimate includes updating the connector to support specific handling and testing.
Identity Broker for SharePoint update for 2013 and new feature requests
Update connector to work with SharePoint 2013.
A change was made to the domain casing so that they are consistent, in this case I added .ToLowerInvariant() to user.Domain (AccountNameToDistinguishedNameAdapter.cs, Line 43)
As i mentioned this might not be applicable to all sites, so an option to enable/disable would be appropriate. Possibly also an option to select between Upper or Lower case might be useful too.
SP2013 Dlls.zip
Aurion Schedule Connector failed with reason Cannot resolve the collation conflict between ""SQL_Latin1_General_CP1_CI_AS"" and ""Latin1_General_CI_AS"" in the equal to operation
As per Dustin Page from ASC:
Hi Andre,
Looks like I found the issue, one of the guys made a change to the SQL server environment in Production a few weeks ago and forgot to set all the database collation types back properly. I did move it back to what it’s meant to be set to but it seems I’m still getting the following error in the logs;
20120914,05:25:47,Connector processing failed.,Connector Processor,Information,"Connector Processing page 1 for connector Aurion Schedule Connector failed with reason Cannot resolve the collation conflict between ""SQL_Latin1_General_CP1_CI_AS"" and ""Latin1_General_CI_AS"" in the equal to operation.. Duration: 00:00:01.5635366
SQL collation is set back to SQL_Latin1_General_CP1_CI_AS as per the test environment. Yet I’ve restarted the Broker Service and it keeps seeing the same error?
IdB upgrade issue.JPG
Customer support service by UserEcho