Persistent Data Storage Design Pattern

Applies To: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012

When working with persistent storage not described in the Data Dictionary, add version control features to read previously saved data to be read later when the structure is changed.


Your program saves some data for later use in a structure not supported by the Data Dictionary.

You later change the format of the data to be stored.

You want to read and recognize data stored in old formats rather than having problems with the data, eventually deleting it.


Whenever you save data persistently in structures unknown to the Data Dictionary (such as contents of containers in the database or data in flat files on a disk), add a version number to the structure as the first entry.

When you write data, set the initial version number to 1. When you later modify the structure, it should still be possible to read the old structure and increment the version number. Make it possible to also read the new structure.

When reading data, process it based on the version number found as the first entry.

If you read data older than the current version, interpret it as best you can, or, if you cannot use it in any meaningful way, abort the operation with a meaningful message to the user.


Structures that were supposed to remain unchanged may eventually change. It is often the case that old data cannot be read when it is needed the most.

Known uses:

  • All pack/unpack methods on RunBase

  • AOT Export file format (.xpo)

See also

Microsoft Dynamics AX Design Patterns

Announcements: New book: "Inside Microsoft Dynamics AX 2012 R3" now available. Get your copy at the MS Press Store.