To combat incompatabilities with old patch-provisioning-xmls after a firmware-update, the phone does it's best to determine the Version of each settings-section in a provisioning-xml.

Foremost the version-attribute is used.

<users version="1.8.9">...</users>

This version-number is not to be confused with the firmware-version. It has it's own numbering scheme and gets increased every time we add a setting even without releasing a firmware.

If your provisioning-xmls do not contain a version, then the phone uses stored xsd's of former releases to individually compare each settings-section against. If none matches version 0.0.0 is assumed.

Once the version is determined, the migration-steps (renaming and such) get applied one by one until the current settings-version is reached. At that point each settings-section gets stripped of any trash that the current xsd doesn't know about and then gets merged with the phones current settings.