Migration Principle
The general migration principle is as follows:
Enumerations
- parse all EP V1 Enums and create EP V2 Enums and 1 Version - all EP V2 Enums are created within a single EP V2 Application Domain which is configurable 
- all EP V2 Enums are shared 
 
Application Domains
- for each EP V1 Application Domain: - create an EP V2 Application Domain - if an EP V2 applicationDomainPrefix is configured, the CLI prepends the prefix to each Application Domain Name - Note - Note: this is useful for test runs, as it allows for a quick undo of the migration run by deleting all EP V2 Application Domains starting with the prefix. 
- if a EP V1 Topic Domain is configured, it is migrated to EP V2 - Note - EP V2 Topic Domains have restrictions such as if configured with a variable, it must be an Enum. See also Known Limitations. 
 
- parse all EP V1 Schemas and create EP V2 Schema Objects & 1 Version. 
- parse all EP V1 Events and create EP V2 Events and 1 Version. 
- parse all EP V1 Applications and create EP V2 Applications and 1 Version. 
 
Existing Objects & Versioning
The CLI also works if EP V2 already has the same Application Domain(s) and/or Objects & Versions defined.
In case an existing object/version is found, the following logic is applied:
- check if the EP V1 object is different to the existing EP V2 object - if yes, update the object 
 
- check if the EP V1 object is different to the existing EP V2 version: - if yes, create a new EP V2 version - note: the new version number is defined by the versionStrategy configuration option