Friday, April 4, 2014

Validating mapping tables in FDMEE

One of the nicest enhancements in FDMEE is the capability of validating target members from mapping tables.
What is that? to better understand I will go back to Classic FDM...
Once upon a time...
When you created a mapping in FDM (I said created so not imported) and your target was explicit member (no wildcards), that target member had to be valid (exists in the dimension of your target application)
For example, I want to create a explicit mapping that maps source value BostonSales to target member EastSales. After typing manually EastSales in Target Entity then new row is added when we click Update Grid:
We could also have browsed for the target member instead of typing it which ensures our member is valid as we did not have type it avoiding potential typos:
But what happened if we had a typo? Let's type EsstSales:
Happens that after trying to update the grid we got an error as EsstSales is an invalid member of Entity dimension.
So after adding mappings, explicit target members were validated when updating the grid.
Obviously, mappings where target member had any wildcard character were not validated against target dimensions:
What about importing mappings? Classic FDM did not validate mappings (any type) when importing, only new mappings were added...
In the following example you can see how an explicit mapping for NYSales with an invalid target entity (EsstSales) is imported with no errors:
What about FDMEE?
Let's reproduce the same example in FDMEE:
Hmm, not validation error anymore...the new mapping rule was successfully added. It did not check my target entity EsstSales like Classic FDM did:
Wait a minute, what is that button labeled as Validate? Let's click on it :-)
So I can add mappings and then validate them by simply clicking a button, nice!
It will validate all target members in my mappings:
All? the same as Classic FDM, it will not validate target members having wildcard characters neither. The same as Classic FDM, obvious :-)
I can still add target members by browsing target dimensions:
I know, Descriptions are empty. As far as I know this is expected behavior as this functionality was not implemented yet. I know, weird.
Let's play a game: Find 1 difference. Easy one :-) 
Did you find it? I hope you have not wasted more than 1 minute :-) Any way I have to give you the solution, otherwise I cannot continue with this post!
You're right, Validate button is missing for Multi-Dimension mapping. Why? don`t worry, your explorer is OK, it's a bug.
So how I Validate my Multi-dimensional mappings?
I have been thinking in a workaround, just to play a little bit. In FDMEE you have now 2 import modes (Merge and Replace) and the option to validate mappings while they are imported (nice enhancement):
So I thought, why just create my mappings in TXT (or Excel) and then import them by selecting Validate option?

1. I created a multi-dimension mapping as follows:
2. Then I exported mappings for Entity dimension to TXT file:
We can see how mappings are exported to the text file:
3. I tried importing mappings for Entity dimension:
Select Merge and Validate options:
But file was imported with no errors!!!
4. Ok, then I thought... I will add an invalid mapping line to my file and import again (DummyMap):
As DummyValue does not exist it should raise a validation error:
Which one?
Ok, so the new line is validated but my multi-dimension mapping is not yet...
5. Let's give another try. I will change the target value for my dummy mapping to EsstSales:
After importing it again:
2 errors? Let's see them!
Woops, my multi-dimension mapping is now validated.
So what happened? to me the validation process takes all explicit target members (like EsstSales), validate them, and then mark as invalid rows any having an invalid target member. As our dummy mapping has an invalid target member, collaterally our multi-dimension mapping is marked as invalid too.
What do you think?
Do you have 100 multi-dimension mappings with explicit target member? create 100 explicit mappings, put all together in a file, import and can later remove the explicit mappings...


  1. Hi Francisco,

    What access is required to perform the validation upon the target application members. Because it is showing error when performing from normal Planner user.


  2. Hi Francisco,
    is it possible to check in a like mapping if the target value exists?

    1. only if target member has been explicitly defined.

      123* -> 4567 (4567 can be validated)
      123* -> 4567* (4567* cannot be validateD)


Thanks for feedback!