Migration Facility

The migration facility is a process that is automatically run when you import definitions from a supported version of Uniface 9 or an earlier version of Uniface 10. When importing an export file, Uniface detects whether migration is required and transparently migrates development object definitions to the new Repository.

Automatic migration occurs in two major phases:

  1. First, the data is read from the export file and imported into the dictionary. During this process, some data is already modified by being mapped to new Repository locations. Data may end up in different fields of the dictionary tables, or even in completely different tables. Typically, these modifications do not depend on data other than the occurrence that they are part of.

    For example, in Uniface 10, some properties have been renamed or normalized, such as the comment fields. For consistency reasons comment fields of all objects are now called UCOMMENT, so for the table UCGROUP the U_DOC field is mapped to UCOMMENT.

    For more information, see Uniface 10: Changes in Properties.

  2. After the data is physically imported, data that relies on other parts of the Repository being available, is modified. For example, the component variables, which used to be stored in a separate table (UXREGS), are migrated to a declaration block in the table UFORM, which holds component definitions.

    It is preferable for the import to be done using a single export file, so that this stage of the migration has full access to all other data. However, it will also take place when importing a Uniface 9 export file at a later stage. For example, if such an export file contains only one component, that single component is migrated, not the full Repository, which was already migrated earlier.

    During this phase, Uniface performs the following actions:

    • If the data contains invalid definitions, a fatal error is reported and the definition for the main development object is removed from the Repository.

      Invalid definitions can be the result of data that was incompletely or incorrectly migrated to Uniface 9. In the Uniface 9 Development Environment, such definitions may have been ignored, but in Uniface 10 they are not, and must be corrected before the object in error can be migrated.

    • Creates typed libraries for global objects and IncludeScript.

    • Creates typed libraries for modeled properties (formerly known as templates)—entity and field interface (Database Access property), Field Syntax, and Field Layout properties. Each of these libraries is called LIB.

    • Moves code to the new trigger containers—Declarations, Script, or in the case of entities, Collection Script or Occurrence Script. You can fine-tune this process using migration logicals. For more information, see Migration of ProcScript.

    • Migrates Form components, ensuring that all objects in the Form have a unique name.

      For more information, see Migration of Components.

    • Migrates component templates to modeled components, and attached components to derived components. For more information, see Migration of Component Templates and Attached Components.

    • Migrates field templates to Uniface 10 templates, which are available in the palette V9TEMPLATE.V9TEMPLATE. For more information, see Migration of Field Templates.

    • Converts component variables from separate objects to variable definitions in the component's Declarations container. Layout definitions that are not relevant are removed, such as right-aligned (RGT), and variables with an SS or Z data type are converted to S.

    • If the data includes Uniface defaults (UDEFAULTS), they are converted to Uniface 10 templates and palettes. For more information, see Migration of Uniface 9 Defaults.

    • If the data includes Uniface 9 DICT definition tables, the DICT entities are removed from the Uniface 10 Repository during migration.

    • Properties of subtype entities that cannot be specialized are cleared to prevent confusion, since their values are ignored. For more information, see Migration of Subtype Properties.

Limitations

Uniface will reject the following objects during migration and report a fatal error indicating what the problem is.

  • Components that contain invalid layout definitions, such as:

    • A print trailer or print break frame drawn inside an entity

    • An entity, other than the first one, that has incomplete dimensions specified.

    Such definitions may stem from old character mode applications. In Uniface 9 they were also invalid, but ignored during compilation. In Uniface 10, they cannot be compiled and are rejected.

  • Entities of the Uniface 9 DICT meta-model are initially imported, but they are removed during migration to prevent the Repository from being corrupted, since DICT model definitions have changed in Uniface 10.

Related Topics