API Backward Compatibility and Import

The VOSS-4-UC system maintains a Data Model version data store containing all versions that have been imported onto the system.

While there is always a current version of a Data Model in use on the system, a check is carried out during the import of data:

  • If the current version is newer than the definition of the imported data, then the imported definition data is flagged internally as automigration: false to prevent resources from auto-migrating from a newer version to an older version.
  • Importing an older version will not replace the latest definition as the default schema. The older version will only be added to the version store.

The snippet example below shows the automigration attribute:

{ "meta": {},
 "resources": [
   { "data": {
     "name": "test_mig_dm"
     ...
     },
     "meta": {
       "hierarchy": "sys",
       "model_type": "data/DataModel",
       "schema_version": "0.1",
       "version_tag": "0.3",
       "automigration": false
     }
   }
 ]
}

This model definition version store makes it possible for version definition imports to be sequence independent, allowing a freshly installed system to construct the version history for backwards compatibility.