0
Answered
How to configure Adapter's DN with the attribute name containing the underscore, "_" character
All the fields name for all the SQL tables at client site (ACG CEO) contains the underscore, "_" character.
When configuring DN (<dnComponent>) for Empower Adapter to specify the attribute (field) hr_empl_code the Identity Broker service could not start.
The following error is generated:
og Name: Application Source: The following error in Adapters occurred during start of the server: hr_empl_code is not a valid LDAP attribute name Parameter name: attributeName Date: 2/17/2011 3:01:36 PM Event ID: 0 Task Category: None Level: Error Keywords: Classic User: N/A Computer: w2k8r2x64-fim.fim.uns.com Description: Error occurred in module: Adapters The following error occurred: System.ArgumentException: hr_empl_code is not a valid LDAP attribute name Parameter name: attributeName at Unify.Framework.AdapterEntityValueCollectionKey..ctor(String valueName) at Unify.Framework.AdapterEntityValueCollectionKey.op_Implicit(String field) at Unify.Framework.AdapterEntityDistinguishedNameGeneratorXmlGenerator.ConvertKey(String value) at Unify.Framework.EntityFieldValueDistinguishedNameComponentGeneratorFactory`2.CreateComponentGenerator(XElement factoryInformation, DNAttributeType attributeType) at Unify.Framework.EntityDistinguishedNameComponentGeneratorXmlFactoryBase`2.CreateComponent(XElement factoryInformation) at Unify.Framework.PlugInGeneratorBase`4.CreateComponent(TFactoryInfo factoryInformation) at Unify.Framework.EntityDistinguishedNameGeneratorXmlGeneratorBase`2.<>c__DisplayClass1.<CreateComponent>b__0(XElement dnComponentElement) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source) at Unify.Framework.EntityDistinguishedNameGeneratorXmlGeneratorBase`2.CreateComponent(XElement factoryInformation) at Unify.Framework.GenericEntityDistinguishedNameGeneratorXmlGenerator.CreateComponent[TKey,TEntity]() at Unify.Framework.AdapterConfigurationFactory.CreateComponent(XElement factoryInformation) at Unify.Framework.AdapterConfigurationGenerator.<>c__DisplayClass4.<CreateComponent>b__1(XElement configurationElement) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Unify.Framework.AdapterConfigurationGenerator.CreateComponent(XElement factoryInformation) at Unify.Framework.AdapterEngine.Start() at Unify.Framework.UnifyEngine.Start() Event Xml: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="The following error in Adapters occurred during start of the server: hr_empl_code is not a valid LDAP attribute name
Parameter name: attributeName" /> <EventID Qualifiers="0">0</EventID> <Level>2</Level> <Task>0</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2011-02-17T04:01:36.000000000Z" /> <EventRecordID>15370</EventRecordID> <Channel>Application</Channel> <Computer>w2k8r2x64-fim.fim.uns.com</Computer> <Security /> </System> <EventData> <Data>Error occurred in module: Adapters The following error occurred: System.ArgumentException: hr_empl_code is not a valid LDAP attribute name Parameter name: attributeName at Unify.Framework.AdapterEntityValueCollectionKey..ctor(String valueName) at Unify.Framework.AdapterEntityValueCollectionKey.op_Implicit(String field) at Unify.Framework.AdapterEntityDistinguishedNameGeneratorXmlGenerator.ConvertKey(String value) at Unify.Framework.EntityFieldValueDistinguishedNameComponentGeneratorFactory`2.CreateComponentGenerator(XElement factoryInformation, DNAttributeType attributeType) at Unify.Framework.EntityDistinguishedNameComponentGeneratorXmlFactoryBase`2.CreateComponent(XElement factoryInformation) at Unify.Framework.PlugInGeneratorBase`4.CreateComponent(TFactoryInfo factoryInformation) at Unify.Framework.EntityDistinguishedNameGeneratorXmlGeneratorBase`2.<>c__DisplayClass1.<CreateComponent>b__0(XElement dnComponentElement) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source) at Unify.Framework.EntityDistinguishedNameGeneratorXmlGeneratorBase`2.CreateComponent(XElement factoryInformation) at Unify.Framework.GenericEntityDistinguishedNameGeneratorXmlGenerator.CreateComponent[TKey,TEntity]() at Unify.Framework.AdapterConfigurationFactory.CreateComponent(XElement factoryInformation) at Unify.Framework.AdapterConfigurationGenerator.<>c__DisplayClass4.<CreateComponent>b__1(XElement configurationElement) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Unify.Framework.AdapterConfigurationGenerator.CreateComponent(XElement factoryInformation) at Unify.Framework.AdapterEngine.Start() at Unify.Framework.UnifyEngine.Start()</Data> </EventData> </Event>
The sample Empower Adapter configuration is
<AdapterEngine> <!-- Adapter configuration for Empower Person --> <AdapterEngineConfigurations> <!-- Adapter configuration for Empower Person consist of Person and Position Connectors --> <AdapterConfiguration BaseConnectorId="{862A68B4-377C-41b5-AFB9-2A705076285F}" AdapterId="{706D4F9A-D291-43CB-9A24-3467DE6B588A}" AdapterName="Empower Person Adapter" class="person" > <dn> <dnComponent name="Field" key="hr_empl_code" attributeType="UID" /> </dn> <adapterEntityTransformationFactory name="ChainList"> <!-- Renaming (mapping) the Person connector attributes for the Person connector --> <adapter name="Move" > <columnMappings> <columnMapping TargetAttribute="EmployeeCode" SourceAttribute="hr_empl_code" /> <columnMapping TargetAttribute="MonthNumb" SourceAttribute="hr_mnth_numb" /> <columnMapping TargetAttribute="StatusCode" SourceAttribute="hr_stus_code" /> <columnMapping TargetAttribute="StatusDate" SourceAttribute="hr_stus_date" /> <columnMapping TargetAttribute="StatusDati" SourceAttribute="hr_stus_dati" /> <columnMapping TargetAttribute="Surname" SourceAttribute="hr_empl_surn" /> <columnMapping TargetAttribute="GivenName" SourceAttribute="hr_empl_givn" /> <columnMapping TargetAttribute="EmployeeName" SourceAttribute="hr_empl_name" /> <columnMapping TargetAttribute="EmployeeTitle" SourceAttribute="hr_empl_title" /> <columnMapping TargetAttribute="EmailAddress" SourceAttribute="hr_email_adr" /> <columnMapping TargetAttribute="Mobile" SourceAttribute="hr_mobile_ph" /> <columnMapping TargetAttribute="PreferredName" SourceAttribute="hr_pref_name" /> <columnMapping TargetAttribute="NoneFlag" SourceAttribute="hr_none_flag" /> </columnMappings> </adapter> </adapterEntityTransformationFactory> <image>omitted-for-brevity</image> </AdapterConfiguration> </AdapterEngineConfigurations> </AdapterEngine>
Could you please advise me how I could specify the DN?
The Empower Connector and Adapter configuration file attached.
AdapterEngine.extensibility.config.xml
ConnectorEngine.extensibility.config.xml
Customer support service by UserEcho
Have a look at IDB305:Move attributes transformation.
Hi Addam,
I have been using the IDB305:Move attributes transformation but I do not see any referrence on how I can specify the Adapter's DN.
In addition, using IDB305:Move attributes transformation, I encounterred another issue, see
ACGCEO-10I like to note that the information is not up to date for Identity Broker v3.0.5 or later. The columnMapping attribute listed at IDB305:Move attributes transformation is out of date.
•The LeftAttribute should be SourceAttribute
•The RightAttributeshould be TargetAttribute
You should be able to use the EmployeeCode as the anchor rather then hr_empl_code.
Hi Peter,
That allows the Identity Broker service to start successfully. Thanks.
As a side note: Interestingly, when configuring the DN (<dnComponent>) within the Relation.Group, the Identity Broker doesn't complain and I can start Identity Broker service succesfully.
An example of the Relation.Group is
Question answered. Resolved.
Closed.
Shane
I assume that the DN is being ignored there. I think it will only see it as part of the adapterconfiguration, not a transformation.