Error during data import, when using multiple entities in one Processing Group that have different financial dimensions

Consider the following scenario:

You will get an error “Unable to return DimensionAttributeValue record for xxxxxx”,

when using the DIXF tool to import data and have multiple entities in one Processing Group

that have different financial dimensions.

The Problem is that, the system always takes the first source data format for the “Copy data to target” step. 

The simple scenario is:

 

1. Create a Processing Group

2. Create 2 entities in that processing group (i.e. Customer and Items)

a. It is needed to have 2 entities with different Financial dimensions

    and different source data formats

3. Get the staging data

a. Your data should have the Field “DefaultDimensionStr” filled

4. Copy the Data to target

5. Now you are getting the error :

     “Unable to return DimensionAttributeValue record for xxxxxx”.

Workaround suggestion:

Go to \Data Dictionary\Tables\DMFDataSourceProperties\Methods and create a new method.

Overwrite the new created method with following code snippet:

public

static DMFDataSourceProperties wdxFindByExecIdDefGroupEntity(

    DMFExecutionId          _execId,

    DMFDefinationGroupName  _defGroup,

    DMFEntityName           _entity)

{

    DMFDataSource               dmfDataSource;

    DMFDataSourceProperties     dMFDataSourceProperties;

    DMFDefinitionGroupExecution dFDefinitionGroupExecution;

   

      if (_execId && _defGroup)

    {       

               selectfirstOnly1 ExecutionId, DefinitionGroup from dFDefinitionGroupExecution

               where dFDefinitionGroupExecution.ExecutionId == _execId

                && dFDefinitionGroupExecution.DefinitionGroup == _defGroup

                && dFDefinitionGroupExecution.Entity == _entity

       

              join SourceName from dmfDataSource

           where dmfDataSource.SourceName == dFDefinitionGroupExecution.Source

          join dMFDataSourceProperties

           where dMFDataSourceProperties.Source == dmfDataSource.SourceName;

    }

   return dMFDataSourceProperties;

}


 

3- Save and compile

4- Got to the \Classes\DMFEntityWriter\write method and change the code as shown below:

    //Before

//dmfDataSourceProperties =  DMFDataSourceProperties::findByExecIdAndDefGroup(_executionId,_definitionGroup);

//After
dmfDataSourceProperties = DMFDataSourceProperties::wdxFindByExecIdDefGroupEntity( _executionId, _definitionGroup,_entity.EntityName);

 

5- Save and compile

6- Do an Incremental CIL generation