Skip to Content

XSD Expand Recursive Structure - mapping error on saving - recursive node collapses

Hi All,

I am having problems with a message mapping where the source structure contains a recursive node. My understanding was that the graphical editor can handle a recursive structure so long as we can specify how deep the recursion goes. Here is my source structure:

The node ALL contains node CH which in turn contains node ALL and so a recursive structure occurs. I only need to map values from the first level of recursion and so in the mapping editor I use "Expand Recursive Structure" and am able to map fields to the target. However on saving the mapping I get the error:

  • The source structure, target structure, or a function library has been changed or could not be found in the Enterprise Services Repository. The mapping definition contains elements or attributes that do not exist in the changed structure, or functions that were changed in a function library. The relevant entries will be deleted.
  • Node with path .../All/Ch/All/Pa/InNum not found in source structure

After the mapping error the node that was expanded and mapped has collapsed and mappings lost. Does anyone know why the expanded structure seems to collapse when pressing save?


recursive.jpg (76.6 kB)
Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Best Answer
    Aug 24, 2017 at 09:15 AM

    This looks like a bug and is described in OSS Notes:

    • 2156617 - Recursive node loading error in Message Mapping Editor
    • 2309993 - Importing XI/PI Content for MDM-GDS Results in Path Not Found Error

    I tried the manual fix described in note 2309993 which was to use combined "If Then Else" and "Exists" statements to force the node path to be found. However this made things worse by causing the mapping to be un-maintainable due to error Function Model Undefinded. To recover this I had to reject the mapping changes and go back to the previous mapping version.

    Through trial and error I have now come up with a solution that works. As you can see (in the picture above) the node ALL is 0 to unbounded and I was previously using it to create line items in the target structure. Therefore source-ALL was mapped directly to target-LINE_ITEM. This was always causing error "Node with path <the mapped field> not found in source structure" on saving the mapping. To get around this I tried using one of the lower nodes to create lines items. So now I am mapping source-ALL-SH to target-LINE_ITEM and this has resolved the issue, the mapping remains intact on saving and no information is lost.

    A real pig.


    Add comment
    10|10000 characters needed characters exceeded