0
Answered

Using the Move tranformation in the Adapter to rename attribute name result in the error - the column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter

Shane Lim 10 years ago updated by anonymous 5 years ago 16

Using the Move tranformation in the Adapter to rename attribute name result in the error - the column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter.

Note: All the fields name for all the SQL tables at client site (ACG CEO) contains the underscore, "_" character.

The following Empower Adapter configuration result in the error

<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" >
            <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>

Identity Broker service cannot start, resulting in the error below

Log Name:      Application
Source:        The following error in Adapters occurred during start of the server: The column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter (706d4f9a-d291-43cb-9a24-3467de6b588a).  Please check yo
Date:          2/17/2011 3:21:19 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: 
Unify.Framework.AdapterColumnException: The column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter (706d4f9a-d291-43cb-9a24-3467de6b588a).  Please check your configuration before continuing. Currently known fields: hr_empl_code, hr_mnth_numb, hr_stus_code, hr_stus_date, hr_stus_dati, hr_empl_surn, hr_empl_givn, hr_empl_name, hr_empl_title, hr_email_adr, hr_mobile_ph, hr_pref_name, hr_none_flag ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Unify.Framework.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column)
   --- End of inner exception stack trace ---
   at Unify.Framework.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column)
   at Unify.Framework.EntityMoveAttributesAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.AdapterEngine.CreateAdapter(IEntityPartitionUpdatableContextFactory entityEngineRepositoryFactory, IConnectorRepository connectorRepository, IAdapterEntityPartitionUpdatableContextFactory adapterEntityPartitionUpdatableContextFactory, IAdapterConfiguration adapterConfiguration)
   at Unify.Framework.AdapterEngine.<>c__DisplayClass2.<Start>b__0(IAdapterConfiguration adapterConfiguration)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor)
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`1 visitor)
   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: The column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter (706d4f9a-d291-43cb-9a24-3467de6b588a).  Please check yo" />
    <EventID Qualifiers="0">0</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2011-02-17T04:21:19.000000000Z" />
    <EventRecordID>15380</EventRecordID>
    <Channel>Application</Channel>
    <Computer>w2k8r2x64-fim.fim.uns.com</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Error occurred in module: Adapters

The following error occurred: 
Unify.Framework.AdapterColumnException: The column EmployeeCode is not a pre-existing column in adapter Empower Person Adapter (706d4f9a-d291-43cb-9a24-3467de6b588a).  Please check your configuration before continuing. Currently known fields: hr_empl_code, hr_mnth_numb, hr_stus_code, hr_stus_date, hr_stus_dati, hr_empl_surn, hr_empl_givn, hr_empl_name, hr_empl_title, hr_email_adr, hr_mobile_ph, hr_pref_name, hr_none_flag ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Unify.Framework.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column)
   --- End of inner exception stack trace ---
   at Unify.Framework.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column)
   at Unify.Framework.EntityMoveAttributesAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.EntityChainAdapterFactory.ApplyChangeDetectionColumnInformation(IAdapterColumnSources columnInformation)
   at Unify.Framework.AdapterEngine.CreateAdapter(IEntityPartitionUpdatableContextFactory entityEngineRepositoryFactory, IConnectorRepository connectorRepository, IAdapterEntityPartitionUpdatableContextFactory adapterEntityPartitionUpdatableContextFactory, IAdapterConfiguration adapterConfiguration)
   at Unify.Framework.AdapterEngine.<>c__DisplayClass2.<Start>b__0(IAdapterConfiguration adapterConfiguration)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor)
   at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`1 visitor)
   at Unify.Framework.AdapterEngine.Start()
   at Unify.Framework.UnifyEngine.Start()</Data>
  </EventData>
</Event>

I believe I understood and have followed the configuration correctly at Move attributes transformation, although the columnMapping attribute listed is out of date.

  • The LeftAttribute should be SourceAttribute
  • The RightAttributeshould be TargetAttribute

    Could you please advise me what is causing the error above?

The Empower Connector and Adapter configuration is attached.

Thank you

Affected Versions:
Fixed by Version:

Please try LeftAttribute and RightAttribute instead of TargetAttribute and SourceAttribute.

If, according to ACGCEO-9, the doco is out of date, please instead try swapping the columns over.

The error would make sense if that is the mistake that has been made.

Shane,

Are you using Identity Broker service v3.0.5.6?

Hi Adam,

I had tried that as well and result in the following error (this is why I mentioned that the info is out of date)

Unify.Framework.UnifyServerStartException: Missing TargetAttribute attribute in
<columnMapping LeftAttribute="hr_empl_code" SourceAttribute="EmployeeCode" /> --
-> System.ArgumentException: Missing TargetAttribute attribute in <columnMapping
 LeftAttribute="hr_empl_code" SourceAttribute="EmployeeCode" />
   at Unify.Framework.XElementExtensions.AttributeValue(XElement sourceElement,
XName attributeName)
   at Unify.Framework.EntityMoveAttributesAdapterGenerator.GetKeyFromAttributeNa
me(XName attributeName, XElement configurationElement)
   at Unify.Framework.EntityMoveAttributesAdapterGenerator.<CreateComponent>b__2
(XElement columnElement)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce x)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce 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.EntityMoveAttributesAdapterGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterEntityTransformationGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.EntityChainAdapterGeneratorBase.CreateAdapterFactory(IAdap
terEntityTransformationGenerator generator, XElement configurationElement, IAdap
terEntityTransformationGeneratorInformation externalInformation)
   at Unify.Framework.EntityChainListAdapterGenerator.CreateComponent(IAdapterEn
tityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterEntityTransformationGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterConfigurationFactory.CreateComponent(XElement facto
ryInformation)
   at Unify.Framework.AdapterConfigurationGenerator.<>c__DisplayClass4.<CreateCo
mponent>b__1(XElement configurationElement)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce 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 fac
toryInformation)
   at Unify.Framework.AdapterEngine.Start()
   at Unify.Framework.UnifyEngine.Start()
   --- End of inner exception stack trace ---
   at Unify.Framework.UnifyEngine.Start()
   at Unify.Services.Connect.Debug.ProgramProxy.Execute()

Sorry the previous error wasn't entirely correct, slightly misconfigured, but the cause of the error is the same, the TargetAttribute attribute is missing.

here is the error with the correct configuration:

Unify.Framework.UnifyServerStartException: Missing TargetAttribute attribute in
<columnMapping LeftAttribute="hr_empl_code" RightAttribute="EmployeeCode" /> ---
> System.ArgumentException: Missing TargetAttribute attribute in <columnMapping
LeftAttribute="hr_empl_code" RightAttribute="EmployeeCode" />
   at Unify.Framework.XElementExtensions.AttributeValue(XElement sourceElement,
XName attributeName)
   at Unify.Framework.EntityMoveAttributesAdapterGenerator.GetKeyFromAttributeNa
me(XName attributeName, XElement configurationElement)
   at Unify.Framework.EntityMoveAttributesAdapterGenerator.<CreateComponent>b__2
(XElement columnElement)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce x)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce 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.EntityMoveAttributesAdapterGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterEntityTransformationGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.EntityChainAdapterGeneratorBase.CreateAdapterFactory(IAdap
terEntityTransformationGenerator generator, XElement configurationElement, IAdap
terEntityTransformationGeneratorInformation externalInformation)
   at Unify.Framework.EntityChainListAdapterGenerator.CreateComponent(IAdapterEn
tityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterEntityTransformationGenerator.CreateComponent(IAdap
terEntityTransformationGeneratorInformation factoryInformation)
   at Unify.Framework.AdapterConfigurationFactory.CreateComponent(XElement facto
ryInformation)
   at Unify.Framework.AdapterConfigurationGenerator.<>c__DisplayClass4.<CreateCo
mponent>b__1(XElement configurationElement)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSour
ce 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 fac
toryInformation)
   at Unify.Framework.AdapterEngine.Start()
   at Unify.Framework.UnifyEngine.Start()
   --- End of inner exception stack trace ---
   at Unify.Framework.UnifyEngine.Start()
   at Unify.Services.Connect.Debug.ProgramProxy.Execute()

Shane, I believe you have the attributes mixed around. Swap SourceAttribute and TargetAttribute. The SourceAttribute must be in the relationship connector.

Yes I am using Identity Broker Service 3.0.5.6

Hi Shane,

Swapping the SourceAttribute and TargetAttribute works.

It seems that my understanding of Source being the origin of data and Target being where I want to end up with is incorrect.

My apologies for causing this confusion.

Thank you.

Hi Adam,

Sorry, perhaps it's my English, I find the following definition on the SourceAttribute and TargetAttribute at IDB305:Column mapping configuration
is a bit unclear. Which attribute is for copying to and which attribute is to copy from?

<columnMapping> attributes
Attribute name  Type  Required  Description  
TargetAttribute Column name  Yes  The attribute to which the relationship value of the matched entity will be copied in the transformed entity.  
SourceAttribute Column name  Yes  The source attribute from the right hand from which to copy.  

I just want to confirm that the definition and the configuration is correct, not a mistake in the source code.

Thank you.

From the quick look at the source, I think the columns are around the wrong way.

Give that a try. Please let me know the results.

Thanks.

Thank you Adam for your answer.

Swapping the two attributes works for the Move transformation. However this is inconsistent with other transformation, such as the Relational and Relational.Compare.String transformation. By swapping these as well will result the error below.

Do you agree that there is inconsistency here? If yes I recommend that we fix it asap as it will likely continue create confusion. Or at the very least has a known issue tag to it.

This is the *Relational" transform configuration that works

				<adapter name="Relational"
					 InputKey ="hr_empl_code"
					 RelationshipConnectorId ="{1A342DF5-70D2-441D-B79A-A84202E5BEF1}"
					 RelationshipKey ="ww_netl_empl">
					<columnMappings>
						<columnMapping TargetAttribute="FaxNumber" SourceAttribute="hr_bussn_fax" />
						<columnMapping TargetAttribute="PhoneExtension" SourceAttribute="hr_intl_phon" />
					</columnMappings>
				</adapter>		

This is the *Relational" transform configuration that failed (swapping the SourceAttribute and TargetAttribute)

				<adapter name="Relational"
					 InputKey ="hr_empl_code"
					 RelationshipConnectorId ="{1A342DF5-70D2-441D-B79A-A84202E5BEF1}"
					 RelationshipKey ="ww_netl_empl">
					<columnMappings>
						<columnMapping SourceAttribute="FaxNumber" SourceAttribute="hr_bussn_fax" />
						<columnMapping SourceAttribute="PhoneExtension" TargetAttribute="hr_intl_phon" />
					</columnMappings>
				</adapter>		


with the following error


Log Name: Application
Source: The following error in Adapters occurred during start of the server: Unable to find source field FaxNumber
Date: 2/17/2011 5:24:13 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:
Unify.Framework.EntitySchemaConfigurationException: Unable to find source field FaxNumber
at Unify.Framework.AttributeMapper.TransformSchema(IEntitySchema sourceValue, IEntitySchema relatedSchema)
at Unify.Framework.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.Adapter.GetAdapterSchema()
at Unify.Framework.Adapter.get_Schema()
at Unify.Framework.AdapterEngine.CreateAdapter(IEntityPartitionUpdatableContextFactory entityEngineRepositoryFactory, IConnectorRepository connectorRepository, IAdapterEntityPartitionUpdatableContextFactory adapterEntityPartitionUpdatableContextFactory, IAdapterConfiguration adapterConfiguration)
at Unify.Framework.AdapterEngine.<>c_DisplayClass2.<Start>b_0(IAdapterConfiguration adapterConfiguration)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Unify.Framework.Visitor.VisitT(IEnumerable`1 visitCollection, Action`2 visitor)
at Unify.Framework.Visitor.VisitT(IEnumerable`1 visitCollection, Action`1 visitor)
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: Unable to find source field FaxNumber" />
<EventID Qualifiers="0">0</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2011-02-17T06:24:13.000000000Z" />
<EventRecordID>15410</EventRecordID>
<Channel>Application</Channel>
<Computer>w2k8r2x64-fim.fim.uns.com</Computer>
<Security />
</System>
<EventData>
<Data>Error occurred in module: Adapters

The following error occurred:
Unify.Framework.EntitySchemaConfigurationException: Unable to find source field FaxNumber
at Unify.Framework.AttributeMapper.TransformSchema(IEntitySchema sourceValue, IEntitySchema relatedSchema)
at Unify.Framework.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.EntityChainAdapterFactory.Transform(IEntitySchema sourceValue)
at Unify.Framework.Adapter.GetAdapterSchema()
at Unify.Framework.Adapter.get_Schema()
at Unify.Framework.AdapterEngine.CreateAdapter(IEntityPartitionUpdatableContextFactory entityEngineRepositoryFactory, IConnectorRepository connectorRepository, IAdapterEntityPartitionUpdatableContextFactory adapterEntityPartitionUpdatableContextFactory, IAdapterConfiguration adapterConfiguration)
at Unify.Framework.AdapterEngine.<>c_DisplayClass2.<Start>b_0(IAdapterConfiguration adapterConfiguration)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Unify.Framework.Visitor.VisitT(IEnumerable`1 visitCollection, Action`2 visitor)
at Unify.Framework.Visitor.VisitT(IEnumerable`1 visitCollection, Action`1 visitor)
at Unify.Framework.AdapterEngine.Start()
at Unify.Framework.UnifyEngine.Start()</Data>
</EventData>
</Event>

OK - so are we happy to have this issue closed in terms of ACT Cath Ed. We will raise a new one against Identity Broker to be fixed in a new release and for the current documentation to be updated.

By swapping the SourceAttribute and TargetAttribute this allows the Identity Broker service to start successfully.
However, it should be noted that the swapping caused inconsistency in how these attribute are use with other transformation types.

I have noted that the documentation has been updated IDB305:Move attributes transformation

Thus now the documentation is correct, but the actually configuration is still need to be swapped between SourceAttribute and TargetAttribute until this issue is fixed, IDB-47.

Thank you.

Issue is resolved by swapping the SourceAttribute and TargetAttribute as a work-around.