Configuration migration
=======================
By default, Desomnia converts older settings each time it loads a configuration,
without modifying the file on disk. Persistent migration saves the converted
configuration to the source file.
Persistent migration
--------------------
Add the following processing instruction after the XML declaration and before
the outermost element. **Leave the existing format version unchanged** for this
first run:
.. code:: xml
When this example is loaded, Desomnia applies all automatic migrations to the latest format version,
and saves the file. Before replacing it, Desomnia copies the
original to ``monitor.v1.xml`` beside it. A comment in the updated file records
the conversion.
If a migration produces a warning, this policy continues with the converted
settings in memory but does not save the affected step. Review the log and
resolve migration warnings before considering the saved file fully converted.
Configuration
-------------
The optional ```` instruction belongs before
```` or ````, and before any
```` instructions. Use it only once.
autoMigrate
+++++++++++
:default: ``transient``
Controls whether older settings are converted and whether the result is saved:
``transient``
Converts settings in memory and leaves the source file unchanged. Migration
messages recur on subsequent starts or reloads until the file is updated.
``transient|persistent``
Saves migration steps that complete without warnings. Continues in memory
if a step needs review or the file cannot be written.
``persistent``
Saves each migration step that completes without warnings. Stops if a step
needs review or cannot be written, ensuring that the running configuration
matches the saved file.
``never``
Disables conversion. A configuration too old for the installation is
rejected. ``none`` is an alias; neither value can be combined with another
policy.
writeBackupXML
++++++++++++++
The backup path for the original configuration before a persistent migration.
The service account requires write access to both the configuration and backup.
The backup path must differ from the source path.
Relative paths are resolved beside the configuration file. A ``?`` in the name
is replaced by the old format version. Without ``?``, a later backup replaces
the earlier backup at that path.
version
+++++++
An alternative to the ``version`` attribute on the outermost element, for
example ````. If both locations declare a version, the
numbers must agree. See :doc:`/concepts/version`.
Migration messages
------------------
Each migration message identifies the affected element or attribute:
- **INFO:** an automatic change, such as renaming an option.
- **WARN:** review the change before saving it. The initial announcement that
migration is starting is also logged at this level.
- **ERROR:** the conversion cannot be completed; fix the configuration before
starting Desomnia again.
Migration handles known old settings, not every possible typo or custom
configuration. Unknown options may be ignored, so compare custom settings with
the current module reference if they appear to have no effect.
Output format
-------------
The format version is updated, and existing comments and layout are largely
preserved. Attribute formatting can change when an element is rewritten. A
backup is therefore useful even when all changes are automatic.
See :doc:`history` for the changes made by each format version and
:doc:`/guides/troubleshooting` if a configuration fails to load.