Comparing Microsoft Dynamics AX export (.xpo) text files

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kirk Blackburn
    Visitor
    • Jul 2015
    • 4

    Comparing Microsoft Dynamics AX export (.xpo) text files

    I am one of several developers (programmers) using Microsoft Dynamics AX in our organization. I have responsibilities which include the need to know the specific details of differences in the code among our various environments (Test and Production, for example).

    Dynamics AX has the built-in ability to export various types of objects (properties and code) to human-readable text (.xpo) files. There is some structure to each type of object (many types). And there is some consistent object header structure.

    Is there a way to teach BC4 that multi-line object structure as its first priority for aligning the two text files?

    I ask because I often use it for a system-wide comparison where both files approach 1.5 GB (roughly 35 million lines) and contain thousands of objects. While slow to load (for obvious reasons) the text comparison is actually pretty good. However, when there are significant differences (usually caused by many objects on one side that don't exist on the other side), BC4 has some trouble aligning the two sides due to structural similarities in unrelated objects.

    For example, suppose that I have exported two groups of tables with all of their table properties which contain fields and all of their properties, indexes and all of their properties, methods, etc. Each table object will have specific header and footer structure. Within the object, each element (field/index/method/etc.) will also have its own corresponding structure. The number of elements is variable. And, while their associated properties are a fixed list, blank properties may be excluded.

    When comparing the same table on both the left and the right sides in a text compare, BC4 does a fairly good job of aligning the two sides properly. But suppose that the left side contains tables A, B, C, and D and the right side only contains tables A and D. BC4 sometimes attempts to compare table B on the left with table D on the right (with useless results).

    So, what I would like to accomplish is for BC4's text compare to be able to parse Dynamics AX .xpo files natively or for me to be able to configure it to recognize object structure in prioritizing how the text is compared. Does that make sense?

    Thank you for your help in this matter.

    Kirk
  • Aaron
    Team Scooter
    • Oct 2007
    • 16002

    #2
    Hello Kirk,

    In the Session Settings dialog, the Alignment tab, try increasing the Skew Tolerance (max: 30000). This is the number of lines the scan will search for a match, if B and C would push outside of the default limit. This will influence the alignment, but the algorithm may still match on different lines. If so, please also try the Myers or Patience methods to see if they better align your files.

    How do these settings help?

    Otherwise, we can define grammars to match on the specific alignment text, mark everything else as Unimportant, and then make sure Ignore Unimportant Text is disabled and use the Alignment tab option to Never Align mismatches.
    Aaron P Scooter Software

    Comment

    • Kirk Blackburn
      Visitor
      • Jul 2015
      • 4

      #3
      The Skew Tolerance recommendation worked wonders! Thank you!

      Now I have another minor annoyance that is probably easy to resolve:

      Click image for larger version

Name:	Blank Lines Causing Extra Differences.png
Views:	1
Size:	181.2 KB
ID:	76378

      Each pink section is treated as a separate difference when, for my purposes, this is simply all one difference.

      Any suggestions?

      Comment

      • Aaron
        Team Scooter
        • Oct 2007
        • 16002

        #4
        Hello,

        If you toggle off Ignore Unimportant Differences, then the whitespace difference will be counted as a difference and included in a surrounding difference section. How does this work for you?
        Aaron P Scooter Software

        Comment

        • Kirk Blackburn
          Visitor
          • Jul 2015
          • 4

          #5
          There are advantages both ways, toggling between them is very helpful.

          Comment

          • Kirk Blackburn
            Visitor
            • Jul 2015
            • 4

            #6
            Just an FYI, even at the 30,000 line level I have alignment issues, but overall, they were drastically reduced.

            Comment

            • Aaron
              Team Scooter
              • Oct 2007
              • 16002

              #7
              Hello,

              At 30,000, does this mean you have lines that are more than 30,000 lines apart that should align? If you try the other alignment algorithms (Standard, Myers, or Patience) do they help?

              If you have any sample files you can email in to [email protected] we can take a look. Letting us know a pair of line numbers (View menu -> Line Numbers) so we can know which pair should align would help, or any other example information. Please include a link back to this forum thread in the email for our reference.
              Aaron P Scooter Software

              Comment

              • Mikecano
                New User
                • May 2017
                • 1

                #8
                Originally posted by Kirk Blackburn
                I am one of several developers (programmers) using Microsoft Dynamics AX in our organization. I have responsibilities which include the need to know the specific details of differences in the code among our various environments (Test and Production, for example).

                Dynamics AX has the built-in ability to export various types of objects (properties and code) to human-readable text (.xpo) files. There is some structure to each type of object (many types). And there is some consistent object header structure.

                Is there a way to teach BC4 that multi-line object structure as its first priority for aligning the two text files?

                I ask because I often use it for a system-wide comparison where both files approach 1.5 GB (roughly 35 million lines) and contain thousands of objects. While slow to load (for obvious reasons) the text comparison is actually pretty good. However, when there are significant differences (usually caused by many objects on one side that don't exist on the other side), BC4 has some trouble aligning the two sides due to structural similarities in unrelated objects.

                For example, suppose that I have exported two groups of tables with all of their table properties which contain fields and all of their properties, indexes and all of their properties, methods, etc. Each table object will have specific header and footer structure. Within the object, each element (field/index/method/etc.) will also have its own corresponding structure. The number of elements is variable. And, while their associated properties are a fixed list, blank properties may be excluded.

                When comparing the same table on both the left and the right sides in a text compare, BC4 does a fairly good job of aligning the two sides properly. But suppose that the left side contains tables A, B, C, and D and the right side only contains tables A and D. BC4 sometimes attempts to compare table B on the left with table D on the right (with useless results).

                So, what I would like to accomplish is for BC4's text compare to be able to parse Dynamics AX .xpo files natively or for me to be able to configure it to recognize object structure in prioritizing how the text is compared. Does that make sense?

                Thank you for your help in this matter.

                Kirk
                Hi Kirk,
                I'm also doing development in AX and have the need to compare XPOs between environments. Did you come up with a workable settings profile for this task? If so, can you share it? Also, I'd like to be able to automate this as much as possible. Say, given an object's AOT path, compare the same object path in another environment and report on whether they are the same or different and report on the differences.
                Thanks!
                Mike
                [email protected]
                www.linkedin.com/in/michaelcano

                Comment

                Working...