Child pages
  • Protocol versioning

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Versioning of the information exchanged between bit repository components needs to be considered to avoid chaotic system behavior in case of component updates. If components in a bit repository system are based on different protocol version, a well defined strategy for handling this should include the ability to:

  1. Avoid wrong interpretation of messages and data produced by a component build built on a different version of the protocol.
  2. Quickly detect and log that a different version has been received.
  3. Create component resilient to communication with components based on different protocol versions.
  4. Enable a degree of flexibility in which version of the protocol components in the same bit repository system are based on. This will enable minor protocol changes to be rolled out, without having to update all the system components. An example of this could be the adding of enum types, here only producers needing the new type and perhaps some of the consumers need to be updated. Another example is the addition of extra optional elements, where the components only need to be updated if the optional feature is required to be supported for that component.

Note that the integrity and robustness of the system is weighted higher that than the ability to run a system with components based on different protocol versions.  


All messages must include the version number the producing component was based on. All components must also be aware of the protocol version they were based on.

This will ensure that the bullet 2 . feature can be implemented in message receivers.


The version information for the individual message types are distributed together with the protocol xsd's themself. The versioning specification is located in the versioning folder. The versioning definition is modelled modeled as a default protocol version and minimal version, which can be overridden by special configuration for specific messages or data entities.