Configuring OpenMigrate - tsgrp/OpenMigrate GitHub Wiki

High Level Description of Migration Pipeline

OpenMigrate is a highly configurable product, as it can transfer items from various sources to as many targets. The following overview will help understand the process and provide a backbone for configuration.

All migrations transfer data from the source to the target through this process:

  1. The Queue Populator makes nodes of all items located in the Source, placing them into the Queue.

  2. The Queue returns each node and passes it through the Mapping layer.

  3. The Mapping layer transforms the metadata of the item passed to be compatible with the Target. Herein lies the bulk of the configuration.

  4. The Target layer receives and processes the mapped items.

Source

Refer to the appropriate page below for documentation on each specific source.

Mapping

Mapping configurations are handled by two files: core-map-ctx.xml and config-details.xml. Mapping configurations are all applied in order to each node unless they are bound by criteria that the node does not meet, in which case the specific mapping will be skipped for that node. Be mindful that this behavior may cause mappings to override each other.

Mapping Configuration

In the core-map-ctx.xml file verify there are at least three beans "MappingProcessorContainer", "ApplyMappingProcessor" and "MappingModel". The first contains all the mapping layers of this migration, the second is the engine that applies the mapping and the third describes the model used during the mapping.

Verify the "MappingProcessorContainer" has the following structure:

    <bean id="MappingProcessorContainer" class="com.tsgrp.migration.mapping.MappingProcessorContainer" scope="prototype">
        <property name="mappingProcessors">
            <list>
                <ref bean="ApplyMappingProcessorOne" />
                <ref bean="ApplyMappingProcessorTwo" />
                ...
            </list>
        </property>
    </bean>

Verify each of the "ApplyMappingProcessor" beans has the following structure:

    <bean id="ApplyMappingProcessorOne" class="com.tsgrp.migration.mapping.proc.ApplyMappingProcessor" scope="singleton">
        <property name="mappingModel" ref="MappingModelOne" />
    </bean>

Verify each of the "MappingModel" beans has the following structure:

    <bean id="MappingModelOne" class="com.tsgrp.migration.mapping.MappingModel" scope="singleton">
        <property name="config">
            <bean factory-bean="Configuration" factory-method="subset">
                <constructor-arg value="mapping-model-one" />
            </bean>
        </property>
        <property name="transformerFactory" ref="TransformerFactory" />
    </bean>

Note: The use of the transformer factory is optional as some migrations do not require transformations to their attributes or values. Read the Transformer Factory Detail for more information.

Mapping Details

In the config-details.xml file verify that all of the "MappingModel" beans you defined in core-map-ctx.xml are defined within the <config>...</config> tags.

Verify each of the mapping model beans have the following structure for each of the target attributes of this migration:

<mapping-model-one>
   <name>Mapping Model One</name>
   <mappping-criteria>
      <!-- Model will be applied to all nodes matching the criteria. Can think of criteria as 'if' logic for mapping models.-->
      <attribute name="nameOfNodeAttribute" value="valueToCheckFor"/>
   </mapping-criteria>
   <attribute-mappings>
      <attribute-mapping attr-"nameOfTargetAttributeToMap" type="attributeType">
         <value val="@{nameOfSourceAttributeToMap}"/>
      </attribute-mapping>
      ...
   </attribute-mappings>
</mapping-model-one>

Target

Refer to the appropriate page below for documentation on each specific target.

Encrypting property values

If any of your property values contain sensitive information you have the option to encrypt them using this page Encrypting-a-value. Once you've retrieved the encrypted property value, set it in the properties file between '@{' and '}'

Example:

If the property you want to encrypt is password=sensitive you would encrypt your value sensitive and set the password to password=@{<encrypted_value>} This pattern allows the decrypter to recognize that the property value is encrypted. Note: What only certain property files are used with this encryption process, these files are defined in the com.tsgrp.migration.spring.OpenMigratePropertyPlaceholderConfigurer bean in your project configs

⚠️ **GitHub.com Fallback** ⚠️