# WebClient User Guide

## Introduction

The **migration-center WebClient** is a new component introduced in version 22.1.0 and serves to replace the **Desktop Client** in order to provide a better experience and add new features and improvements in the coming versions. It is delivered as a customized Tomcat that is installed as a windows service. The WebClient is currently compatible with **Google Chrome** and **Microsoft Edge.**

## General Information

### Scanners and Importers

**Scanner** is the term used in migration-center for an input connector. It is used to read the data that needs processing into migration-center and is the first step in a migration project.&#x20;

**Importer** is the term used for an output connector used as the last step of the migration process. It takes care of importing the objects processed in migration-center into the target system.

Scanners or importers have a unique name, a set of configuration parameters and an optional description. They work as a job that can be run at any time and can be executed repeatedly.

Scanners and importers are created, configured, started and monitored through **migration-center WebClient** but the corresponding processes are executed by **migration-center Job Server**.

For every run a detailed **history** and **log** file are created.

### History, Reports, Logs

A complete history is available for any Scanner or Importer job from the **Scan Runs** / **Import Runs** window.

This section displays a list of all runs for the selected job together with additional information, such as the number of processed objects, the status, the start and ending time.

![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/GcVreoeWPg11Hbeb9Q17/image.png)

Double clicking an entry or clicking the **Logs** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YG6OKhYdVcwNhDWtV7Hg/image.png) on the toolbar opens the **log file** created by that run. The log file contains more information about the run of the selected job:

* Version information of the migration-center Server Components the job was run with
* The parameters the job was run with
* Execution Summary that contains the total number of objects processed, the number of documents and folders scanned or imported, the count of warnings and errors that occurred during runtime.

{% hint style="info" %}
The amount of information written to the log files depends on the setting specified in the ‘loggingLevel’ start parameter for the respective job.
{% endhint %}

## Sign in

**To connect to a migration-center database**, open the WebClient URL address in the browser:\
\&#xNAN;*https\://\<server-name>/mc-web-client/login*

![the migration-center login page](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/yQofcBRzQqZ6BNZcltHH/image.png)

**Connection**\
Select one of the available connections to the server from the list. If no connections are available or if you want to modify an existing one, click **Manage connections**.

**Manage connections**\
You can create, modify and delete a connection and you can also refresh the list of existing connections.

* **To create a connection**, click the **Add Connection** **+** button and then, in the **New Database Connection** dialog box, type your **Connection Name**, Database **Type**, **Host**, **Port** number and **Service Name**. \
  When finished, click **CREATE**.
* **To modify an existing connection**, select the desired connection, click the **Edit** **Connection** <img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/KBPLUnAlvI6ctCPtbC1R/image.png" alt="" data-size="line"> button and modify the **Connection Name**, Database **Type, Host**, **Port** number and **Service Name** accordingly. When finished, click **Save**.
* **To delete a connection**, select the desired connection, click the **Delete Connection** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7GcnUWzT7cVE2fSxdm1C/image.png) button and then, in the confirmation message, click **DELETE**.

Return to the **Sign in** page either by double clicking the desired connection, by right-clicking the desired connection and selecting **Log in using this connection** or by clicking the **Back <** button on the buttons bar and then logging in.

**User name**\
Type your username (default *fmemc*).

**Password**\
Type your password (default *migration123*).

When finished, click **SIGN IN**.

{% hint style="info" %}
If you are unable to sign in, a notification with the reason will be displayed in the bottom the the page.
{% endhint %}

**To log out of migration-center WebClient**, click **Log Out** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/z6pNwBqXdfSUOBFWlZDC/image.png) on the sidebar.

## Navigate the WebClient

You can easily navigate through the migration-center WebClient sections using the sidebar on the left, as follows:

<table><thead><tr><th width="156.23709369024857">UI element</th><th>Section name</th><th>Used to:</th></tr></thead><tbody><tr><td><p></p><p><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/uRbLsVWoN2w2VX153A76/image.png" alt=""></p></td><td><strong>Jobs</strong></td><td>Start, stop or pause running jobs. This section also displays running scan and import jobs. Along with the description, the run number, start/end date.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/mfSmoCO9tBgirxSNE9Te/image.png" alt=""></td><td><strong>Scanners</strong></td><td>Create and configure scanners that connect to a source systems and extract documents and metadata as migration-center objects.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/D8M8G7H1O0gGzBaFRV5w/image.png" alt=""></td><td><strong>MigSets</strong></td><td>Split the scanned objects into migration sets and define all the transformation rules and generate the target objects ready for import.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/zTV2JnE2XGALBwUJcXzc/image.png" alt=""></td><td><strong>Importers</strong></td><td>Create and configure importers that take migration sets with validated objects and imports them in a target system.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/nSonbTIHPckKROVJkGN9/image.png" alt=""></td><td><strong>Schedulers</strong></td><td>Create schedulers that run automated end to end migrations at regular intervals. </td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/xsRsY45PRwRnFhgWqREW/image.png" alt=""></td><td><strong>Dashboard</strong></td><td>View graphs and analyze the status of the entire migration.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/daOQjl8QYvtQySdBSwNM/image.png" alt=""></td><td><strong>Configure</strong></td><td>Create and manage Job Server definitions, Object Types and Mapping Lists. <br>You can also renew your license and view information in the About section.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/FX3KsQfGDkm31LGHaiZS/image.png" alt=""></td><td><strong>Help</strong></td><td>Go to the documentation page relevant to the section you are currently in.</td></tr><tr><td><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/g8vLRr1JJaJihOTFiXWo/image.png" alt=""></td><td><strong>Log out</strong></td><td>Disconnect from the current migration-center database.</td></tr></tbody></table>

## Use the WebClient

To run a migration, first you need to create a Job Server definition. You can do so in the [<mark style="color:blue;">Jobservers</mark>](#jobservers) section.

Then, you need to:

1. [Create and run a Scanner](#scanners)
2. [Create a Migration Set](#migsets)
3. [Define rules and apply Transformation](#transformation)
4. [Create and run an Importer](#importers)

Additionally, you can:

1. [Schedule a Migration](#schedulers)
2. [Monitor Migration Jobs](#jobs)

## Jobs

**To monitor running migration jobs**, click the **Jobs** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/rFi3ISMgYvaI5kV9uoJV/image.png) on the sidebar.&#x20;

Here you can select a job and **Pause** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/t5IAngagiUYYTxjENwze/image.png), **Start** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/2EZGO5xToVz4n5W4b0NU/image.png) or **Stop** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/UiOaGkd6QWXaKkhBUXKb/image.png) it using the buttons in the toolbar. You can also filter the list using the **Column Selector** and **Search** field in the top right of the page.

{% hint style="danger" %}
If the Jobserver is restarted while a job is **running** or **paused**, the job run will still be marked as such in the database, but it will no longer exist in the Jobserver.\
To restart the job you just need to **Stop** it first and start it again from the WebClient.
{% endhint %}

## Scanners

You need to create, configure and run a scanner in order to connect to a source system.&#x20;

**To create a scanner**, click the **Scanners** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/vJp3ieyTilzV39MGirSs/image.png) on the sidebar, click the **Add Scanner +** icon on the toolbar and then configure the parameters.

**To modify a scanner**, select the desired Scanner and either right-click it and then select **Edit Scanner** on the context menu, or click the **Edit** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/tcgi9s3dnEIl4tro6WpA/image.png) on the toolbar.&#x20;

**To copy a scanner,** select the desired Scanner and either right-click it and then select **Copy Scanner** on the context menu, or click on the **Copy** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3oamY3TKxoIikUv7MtxG/image.png) on the toolbar. When finished, click **SAVE**.

**To delete an existing Scanner**, select the desired Scanner and either right-click it and click **Delete Scanner** on the context menu, or click the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/60Hf3BdeziowuQgBM2Pl/image.png) on the toolbar. Then, in the **Confirm Delete** dialog box, click **DELETE**.

{% hint style="info" %}
You cannot delete a Scanner or a Scan Run if any objects belonging to it are assigned in a migset.
{% endhint %}

{% hint style="danger" %}
Deleting a Scanner will also delete and remove all its associated Source Objects from the migration-center database.
{% endhint %}

### Details <a href="#scanner-details" id="scanner-details"></a>

In the **DETAILS** tab, give your scanner a meaningful **Name**, then select the **Type** of connector from the list. Then, depending on the selected connector type, the **Parameters** section will be populated with the connector's specific configuration parameters.

{% hint style="info" %}
Depending on the selected connector type, the actual parameters displayed will vary. For more information, consult the individual User Guide of the connector you are configuring.
{% endhint %}

![example of a Documentum scanner](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/pqn4Ft0LxeNyMJYk5v01/image.png)

Next, in the **Location** field, select the Job Server where your Scanner be executed when you run it. Optionally type a meaningful **Description** for your scanner.

When finished, click either:

* **SAVE** - if you plan to run the scan later;
* **SAVE & RUN -** to save and run the scanner immediately, in which case you will be prompted to enter a description for this run in the **Enter Job Run Description** dialog box. By default the run description is the name of the scanner and the number of which run it is.&#x20;

### Scan Runs <a href="#scanner-runs" id="scanner-runs"></a>

To view the history of your scanner, click the **SCAN RUNS** tab of a scanner.

**To view a Scan Run Log** select the desired scan run and either right-click it and select **Download Scan Run Logs**, or on the **Log** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/v3KheZGcguVE291jNXXv/image.png) in the toolbar or by double clicking the entry.

**To view the Scanned Objects** of a Scan Run select the desired scan run and either right-click and select **Show Scan Run Objects** or click the **Source Objects** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/8BoxxBbH4Fe6J6MWsGBb/image.png) in the toolbar.

**To delete a Scan Run** select the desired scan run and either right-click it and select **Delete Scan Run** or click the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/uqUWqr461sqvtpYzFCx6/image.png) in the toolbar.

{% hint style="danger" %}
When you delete a scan run, all the objects belonging to that run will be deleted and removed from the migration-center database.
{% endhint %}

### Source Objects <a href="#scanner-objects" id="scanner-objects"></a>

You can view the metadata of the extracted documents for the entire scanner by clicking the **SOURCE OBJECTS** tab.&#x20;

You can also do this by selecting your scanner in the **Scanners** view and either right-click and select **Source Objects** or click the **Source Objects** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/8BoxxBbH4Fe6J6MWsGBb/image.png) in the toolbar.

The first **columns** from **Id** to **Import date** are internal migration-center columns and the rest represent an **attribute** from your source system.

You can change the number of rows on a page and navigate between pages using the bottom toolbar.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/C4YxMvup07q9rJu6VHdM/Source%20Objects%20View.png" alt=""><figcaption></figcaption></figure>

**To Customize the displayed columns,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/NclbjDIPrgoit9lwqyne/Customize%20Icon.png) **Customize Columns** button in the toolbar. You will be presented with a list of all existing columns from which you can choose which will be displayed. By default, all columns are displayed.&#x20;

**To Export objects as CSV,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/i0BTvDFWpwVGgbLTGfuh/image.png) **Export objects as CSV** button in the toolbar. This will export all the object metadata present in the Scanner as a CSV file.

{% hint style="success" %}
You can apply filters on the object table to export only the objects that you need.
{% endhint %}

**To view the Attributes of an object,** click on the object and then on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/VSMODwYaneNo0iOCNEXF/image.png) **View Attributes** button in the toolbar. This will open a view that contains all the attributes of that specific object.&#x20;

**To view the Relations of an object,** click on the object and then on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/8kIvcBoh2axbPD7MTcPS/image.png) **View Relations** button in the toolbar. This will open a view that contains all the relations and their details for a specific object.

**To refresh the objects list,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/dQ1oUxTefueDXbIkOto5/image.png) **Refresh Objects** button in the toolbar.

**To Filter objects based on a specific attribute,** use the dropdown to the right of the toolbar. This will enable you to select one of the attributes of your objects and then search for values in that attribute.

{% hint style="warning" %}
The **Filter** on the **Object Tables** is different than the ones in the main tables. Here the search is done in the database and it uses **exact match**.

You can use the following **wildcards** on the object table filters:

&#x20;  **%** (percent symbol) - match any number of characters

&#x20;   **\_**  (underscore) - match a single character
{% endhint %}

## Migsets

A **migration set,** or **migset** for short, is a grouping of Source Objects on which a set of transformation rules are applied which generates Target Objects.

**To create a Migset**, click on the **Migsets** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/8tCzqsF1pBTRjUSMu7wb/image.png) in the sidebar and on the buttons bar click the **Add MigSet +** button.&#x20;

**To modify a Migset**, select the desired Migset and either right-click it and then select **Edit Migset** on the context menu, or click the **Edit** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ew2Z9R57kZXDuuR2dfyL/image.png) icon on the toolbar. When finished, click **SAVE**.

**To copy a Migset,** select the desired Migset and either right-click it and then select **Copy Migset** on the context menu, or click on the Copy icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3oamY3TKxoIikUv7MtxG/image.png) on the toolbar. When finished, click **SAVE**.

**To delete a Migset**, select the desired Migset and either right-click it and click **Delete Migset** on the context menu, or click the **Delete** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/Rqr75RxdQOo6xcP8puxF/image.png) icon the toolbar. Then, in the **Confirm Delete** dialog box, click **DELETE**.

**To Apply Transformation on a migset** you can use the **Transform** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/oJUvdNm1I03iZgfy8Rsb/image.png). This will start a background process of processing all Transformation Rules on each Source Object in order to generate the new metadata on the Target Objects.

{% hint style="info" %}
Source Object metadata is **NOT** modified during transformation. A copy of the objects is generate with the new metadata, called **Target Objects**.
{% endhint %}

**To Reset Transformation on a migset** you can use the **Reset** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/qZS8Zha3RWHAVGOqUyD8/image.png). In the confirmation dialog you have a checkbox if you want to **Reset Imported Objects** (by default only objects in status *Transformed*, *Validated* and *Error* are reset).

{% hint style="danger" %}
Resetting imported objects will break the ability to do **Delta Migrations** for those objects in the future (scanning and importing updates to the already migrated objects).

Therefore this is **NOT** recommended unless you plan on deleting them from the Target System and re-importing them.
{% endhint %}

**Splitting a migset** is a new feature added in the new migration-center WebClient. It allows you to create copies of the selected migset and split its objects equally among them. \
After clicking on the **Split Migset button** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/yO4NnhD7JGwLfyJ5rcHo/image.png)you can select the number of migsets to split it in. \
An approximation of the number of objects per migset after the split is displayed. \
Click on the **SPLIT** button and confirm to start the process.

{% hint style="info" %}
**Transforming**, **Resetting** and **Splitting** objects are processes triggered in the background and can take a longer time to complete, depending on the number and complexity of the transformation rules, the number of objects in the migset and the performance of the Database.
{% endhint %}

### Properties <a href="#migset-properties" id="migset-properties"></a>

#### Details <a href="#migset-details" id="migset-details"></a>

In the **PROPERTIES** tab, in the **DETAILS** subtab, give your MigSet a meaningful Name and optionally a **Description**.

In the **Type** dropdown, select the *Source* to *Target* system migset type (i.e. *FileSystemToDCTM*). Once selected, the list of all scan runs that match the Source part of the migset type are displayed under the **Available** list.&#x20;

**To select objects in a migset**, double-click an entry in the list of **Available** scan runs or select one and use the down arrow button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/fGuQ7AzpiekVbTItdBFa/image.png) to add it to the list of **Selected** scan runs.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/GWi5BBoWsYfPBebgJMR5/image.png" alt=""><figcaption><p>Example of a new Filesystem To Documentum MigSet</p></figcaption></figure>

You can also filter which objects are included in the MigSet by using the **EXCLUSIONS** and the **ADVANCED FILTERS** subtabs.

{% hint style="info" %}
You can only filter objects while objects are not currently locked in your migset.
{% endhint %}

#### Exclusions

In the **EXCLUSIONS** subtab, objects are excluded from your MigSet by choosing which attribute values should be excluded. To do so, select the desired attribute under **Available attributes** and use the **< >** arrow buttons to exclude the values.

#### Advanced Filters

In the **ADVANCED FILTERS** subtab, you can create rule based filters using operators. Select a **Source Attribute**, **Operator**, **Values** and **Connector**, the click on **ADD** to include them. You can also delete rule filters.

You can check your selection by going to the **OBJECT PREVIEW** subtab.

#### Object Preview

In the **OBJECT PREVIEW** subtab, you can see a preview of the filtered objects.

When finished, click the **LOCK OBJECTS** button to add the selected objects to your MigSet. This means that these objects will be locked in this migset and cannot be used in another one. \
Then, in the **Confirm Object Selection** dialog box, click **Yes**.

{% hint style="info" %}
**Object Locking** is done in a background process and can take longer to complete depending on the number of objects being selected and the performance of the Database.
{% endhint %}

### Transformation

#### Rules

**Transformation Rules** define how metadata from **Source Objects** is used to generate new metadata for **Target Objects** by using **Transformation Functions**. A transformation rule is equivalent to a **Target Attribute** after transformation.

**To add a Transformation Rule** click on the Plus icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/gnqRnzV6nJLVS0dRydFV/image.png) then set a **Name** and optionally a **Description**.

**To copy a Transformation Rule** select the rules and click on the **Copy** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/jTUKpRhqgY0sCcyPsBYA/image.png).

**To delete a Transformation Rule** select the rules and click on the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7WzVgsvvTmLXRtryxJsj/image.png).

**To copy rules between migsets** select the rules and click on the **Copy to Clipboard** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/IWvsqMZdQEtSVM6mEK3R/image.png). Then open the **Rules** section of the migset where you want to paste the rules and click on the **Paste from Clipboard** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/F5u2Gfqf6uBsIuqqMLK1/image.png). You can paste as many times as needed.

#### Rule Snippets

**Snippet Rules** are rules whose **value can be used as a step** in any other normal rule.

**To set a Rule as a Snippet** check **Snippet** checkbox ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ogQuVUYPdAINuEg8U20F/image.png) in the Rule Properies.

**To use a Rule Snippet** insert a **GetSnippetRuleValue** function and enter the **name of the Snippet Rule** you want to use.

{% hint style="warning" %}
Snippet rules cannot use the GetSnippetRuleValue function.
{% endhint %}

#### Transformation Functions

A transformation rule can have multiple transformation functions. They can take source attributes, static strings or even previous functions as the input value and provide an output value.

See [TR Function Reference](https://docs.migration-center.com/24.3/webclient-user-guide/tr-function-reference) page for a list of all available functions.

**To add a Transformation Function**:

1. Select the Transformation Rule you want to add a function to.
2. Under **Transformation Methods**, select the desired transformation **Function** you want to use and click on **INSERT FUNCTION**.
3. Fill the function parameters in the popup (the parameters vary depending on the function).
4. Click **OK** to insert the function or **CANCEL** to close the popup.

![Example of a Concatenate function parameters](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/qZdTJEaaESSK4EeYLq16/image.png)

**To get a description of the function or its parameters** you can hover your mouse over the **info** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7YclgSeDnFBK3Rvkun97/image.png)

![Description of the If function](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/snbqyG5cmIRGclbWJGKR/image.png)

**Multi-value Transformation Rules**

Attributes from a source object can be **Single Value** or **Multi Value** (**Repeating**). A Transformation Rule can process both these kinds of attributes, but if the rule itself is not marked as **MultiValue** using the checkbox in the **Rule Properties** it will return only the last processed value.&#x20;

A transformation function can process **All** values or only the value at a specific index of a repeating attribute.&#x20;

![Example of a GetValue function with repeating source attribute](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/PoPqQnYGQYE4rbOopYfk/image.png)

After making a **Transformation Rule** into a multi value one, you can also return multiple functions as separate repeating values using the **Result** toggle.

![Example of multi value rule returning multiple functions](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/v1xSYw3MNqZy8rdzeP4C/image.png)

#### **Debug Rule**

A transformation rule can be **debugged** by taking a **sample source object** and us its metadata to see the **results of each step** in the rule.

1. Get the **ID** of an object whose metadata will be used for debugging the rule.
2. Select the rule you wish to debug.
3. Enter the Object ID in the text field next to the **DEBUG RULE** button.
4. Click the **DEBUG RULE** button.
5. The value for each step is calculated based on the metadata of the selected object and displayed in the **Debug Values** column.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ZmsZVMU2jou6QIJaj5xM/image.png" alt=""><figcaption><p>example for debugging a rule with several steps</p></figcaption></figure>

{% hint style="success" %}
**Double clicking** on the **Debug Value** of a step opens the value in a dialog window for better viewing.
{% endhint %}

{% hint style="danger" %}
Debug values does not take into account if your rule is **single** or **multivalue**.&#x20;

Ex: in a single value rule, repeating values will be displayed at the last step when using Debug, but only the first value of the repeating values will end up in the transformation.
{% endhint %}

**Generate Rules**

For migrations where a simple transformation rule is needed for each or most source attributes you can use the Generate Rules feature by clicking on the <img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3puBe78uS6mSJhkjIVf1/image.png" alt="" data-size="original"> button. \
This will create a Transformation Rule for each Source Attribute with the same name and with a **GetValue()** function for each specific attribute in it. This is very useful in migrations where the Source and Target systems are of the same type.&#x20;

{% hint style="warning" %}
Using the generate rules feature will delete any existing transformation rules and changes will be saved automatically after the confirmation dialog.
{% endhint %}

{% hint style="danger" %}
For objects scanned from Documentum, no rule will be generated for the following attributes: \
i\_antecedent\_id, i\_branch\_cnt, i\_cabinet\_id, i\_chronicle\_id, i\_contents\_id, i\_direct\_dsc, i\_folder\_id, i\_has\_folder, i\_is\_reference, i\_is\_replica, i\_latest\_flag, i\_reference\_cnt, i\_retain\_until, i\_retainer\_id, i\_vstamp, r\_access\_date, r\_alias\_set\_id, r\_aspect\_name, r\_assembled\_from\_id, r\_component\_label, r\_composite\_id, r\_composite\_label, r\_content\_size, r\_current\_state, r\_frozen\_flag, r\_frzn\_assembly\_cnt, r\_full\_content\_size, r\_has\_events, r\_has\_frzn\_assembly, r\_immutable\_flag, r\_is\_public, r\_link\_cnt, r\_link\_high\_cnt, r\_lock\_date, r\_lock\_machine, r\_lock\_owner, r\_object\_id, r\_order\_no, r\_page\_cnt, r\_policy\_id, r\_resume\_state
{% endhint %}

**Other Features**

You can **Export** the entire transformation model using the Export to XML icon <img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/35ofjJh4JSll15CkmLw7/image.png" alt="" data-size="original">.

You can **Import** previously exported transformation model using the Import from XML icon <img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/5pLkaXveNz5uFPkL1SVp/image.png" alt="" data-size="original">.&#x20;

You can **Copy** the transformation model **from another migset** using the Copy Transformation Model icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/0zhaK94imN0jWVtfnUV1/image.png).

You can also **Transform** or **Reset** the objects of this migset without returning to the list of migsets.

{% hint style="danger" %}
**Limitation:** If you **import** new rules into a Migset that already has transformed objects, the attribute names and values will not be displayed correctly in the Objects views.

You need to reset and transform the objects again to get the new metadata displayed correctly.
{% endhint %}

#### Migset Mapping Lists

The migset mapping lists function in the same way as regular mapping lists except they are usable only in the migset they belong to.&#x20;

Fore more details please see the main [Mapping Lists](#mapping-list) section.

#### Associations

Transformation Rules are not automatically used when importing an object. They need to be associated to a **Target Attribute** of an **Object Type** in the **Associations** subtab of the migset.&#x20;

{% hint style="info" %}
See [Object Types](#object-types) for more information.
{% endhint %}

Each Migset has a **target type** system rule that determines to which type an object will be associated with. This rule differs depending on the migset type. For example for any **...ToDCTM** migset the rule is **r\_object\_type**.

**To add an Object Type**, select one from the dropdown list and click the **Add** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/yOsYyzJlPiwxeDZchecE/image.png).&#x20;

**To add an Association**, select the object type, then the transformation rule and target attribute you want to associate, and click on the green **Add** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/PCdJJ9gYSiLsvVfaUAlR/image.png).

Alternatively you can **Auto Associate** transformation rules and target attributes that have the same name, by using the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/LUXzwMdZBfzz0Ad4eVPH/image.png) button. This is the recommended way.

![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/v0behkCNnSDoyB0KpQ13/image.png)

### Source Objects

You can view the source attributes of the objects in the MigSet by clicking the **SOURCE OBJECTS** tab.

The first **columns** from **Id** to **Import date** are internal migration-center columns and the rest represent an **attribute** from your source system.

You can change the **number of rows** on a page and **navigate between pages** using the bottom toolbar.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/JK4PNirk95IfkI9Ux8t2/Source%20Objects%20Migset.png" alt=""><figcaption></figcaption></figure>

**To Customize the displayed columns,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/NclbjDIPrgoit9lwqyne/Customize%20Icon.png) **Customize Columns** button in the toolbar. You will be presented with a list of all existing columns from which you can choose which will be displayed. By default, all columns are displayed.&#x20;

**To Export objects as CSV,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/i0BTvDFWpwVGgbLTGfuh/image.png) **Export objects as CSV** button in the toolbar. This will export all the object metadata as a CSV file.

{% hint style="success" %}
You can apply filters on the object table to export only the objects that you need.
{% endhint %}

**To view the Attributes of an object,** click on the object and then on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/VSMODwYaneNo0iOCNEXF/image.png) **View Attributes** button in the toolbar. This will open a view that contains all the attributes of that specific object.&#x20;

**To view the Relations of an object,** click on the object and then on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/8kIvcBoh2axbPD7MTcPS/image.png) **View Relations** button in the toolbar. This will open a view that contains all the relations and their details for a specific object.

**To refresh the objects list,** click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/dQ1oUxTefueDXbIkOto5/image.png) **Refresh Objects** button in the toolbar.

**To filter objects based on a specific attribute,** use the dropdown to the right of the toolbar. This will enable you to select one of the attributes of your objects and then search for values in that attribute.

**To filter objects by a specific value,** select the cell containing the value by which to filter and then click on the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/d5CzvfpxSFzlQAmB0DvQ/image.png) **Filter by value** button in the toolbar. This will set the current column as the selected one in the filter and set the cell text as the filter value.

{% hint style="warning" %}
The **Filter** on the **Object Tables** is different than the ones in the main tables. Here the search is done in the database and it uses **exact match**.

You can use the following **wildcards** on the object table filters:

&#x20;  **%** (percent symbol) - match any number of characters

&#x20;   **\_**  (underscore) - match a single character
{% endhint %}

**To Remove objects from the migset,** you can select one or multiple objects using the checkboxes to the left of the table. Once you have your selection, press the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YP4GxbFbh8IakLGPLeyp/image.png) **Remove from Migset** button in the toolbar or in the context menu.&#x20;

{% hint style="info" %}
Objects removed from a MigSet are still present in their Scanner and can be selected in other MigSets.
{% endhint %}

### Target Objects

You can view the attributes generated by the transformation rules of the objects in the Migset by clicking the **TARGET OBJECTS** tab.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/Pz29ojYX7pO31QBEDdaO/Target%20Objects.png" alt=""><figcaption></figcaption></figure>

Please see the [**Source Objects**](#source-objects) section for features common to all Objects Views, including **Target Objects.**

**To manually edit the attributes of an object,** press the![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/w6xF9IMT4IFX8JooENCa/image.png) **Edit Attributes** button in the toolbar or in the context menu. This will open a view that will allow you to edit individual object attributes.

{% hint style="info" %}
After manually editing an object, the object will be set to the **Transformed** state. In order to have the object **Validated** you need to run transformation again on the MigSet. This will not affect your manual changes and will validate the edited objects.
{% endhint %}

**To Reset Transformation for one or more objects,** select the required object/s and press the ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/hihzyj6iXJonCdyM16Cd/image.png) **Reset** button in the toolbar or in the context menu. The object will be reset to its **Unprocessed** state.

**To Filter objects based on their status,** use the **Statuses** checkboxes in the bottom toolbar.

### Error Objects

You can view the objects that encountered errors during the **Transform**, **Validate** or **Import** phases in the MigSet by clicking the **ERROR OBJECTS** tab.

You can **Reset all error objects** by clicking the Reset All icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/EEey6KRqFHnyEZgzK6oU/image.png).

The **Error Objects** tab has features present in the [**Source Objects**](#source-objects) and [**Target Objects**](#target-objects) tab.

## Importers

Importers will connect to the Target System, take the selected MigSet with Validated Objects and import them. You can monitor the progress in the Importer run history or directly in the MigSets view.

**To create an importer**, click the **Importers** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/aOehqoLm8KVjAA41EUKg/image.png) on the sidebar and then click the **Add** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/0tWYEEKLMpwmVCG4dU6a/image.png) on the buttons bar and then configure the parameters.

**To modify an importer**, select the desired Importer and either right-click it and then select **Edit Importer** on the context menu, or click the **Edit** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/tcgi9s3dnEIl4tro6WpA/image.png) on the toolbar.&#x20;

**To copy an importer,** select the desired Importer and either right-click it and then select **Copy Importer** on the context menu, or click on the **Copy** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3oamY3TKxoIikUv7MtxG/image.png) on the toolbar. When finished, click **SAVE**.

**To delete an existing importer**, select the desired Importer and either right-click it and click **Delete Importer** on the context menu, or click the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/60Hf3BdeziowuQgBM2Pl/image.png) on the toolbar. Then, in the **Confirm Delete** dialog box, click **DELETE**.

### Details <a href="#importer-details" id="importer-details"></a>

In the **DETAILS** tab, give your Importer a meaningful **Name**, type or select the Importer **Type** from the list and complete the needed **Parameters**.

{% hint style="info" %}
Depending on the selected importer type, the actual parameters displayed will vary. For more information, consult the individual User Guide of the connector you are configuring
{% endhint %}

![Example of a new OpenText importer](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/zwQyVLwO0oVQCLNBisiL/image.png)

Next, in the **Location** field, select the Job Server where your Importer be executed when you run it. Optionally type a meaningful **Description** for your scanner.

### Migset Selection

In the **SELECTION** tab, under **AVAILABLE MIGSETS** you can see MigSets with validated objects that match your target destination: for example, for an OpenText importer, only MigSets with the type **...ToOpenText** will be displayed. Double-click the desired MigSet to add it to the **ASSIGNED MIGSETS** list to be migrated. Note that only validated objects or error objects that previously failed an import will be processed.

When finished, click either:

* **SAVE** - if you plan to run the import later;
* **SAVE & RUN -** to save and run the import immediately, in which case you will be prompted to enter a description for this run in the **Enter Job Run Description** dialog box. By default the run description is the name of the importer and the number of which run it is.&#x20;

### Import Runs <a href="#importer-runs" id="importer-runs"></a>

To view the history of your importer, click the **IMPORT** **RUNS** tab of an importer.

**To view an Import Run Log** select the desired import run and either right-click it and select **Download Import Run Logs**, or on the **Log** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/v3KheZGcguVE291jNXXv/image.png) in the toolbar or by double clicking the entry.

### Delta Migration

Delta Migration is a feature of migration-center that allows you to migrate updates made to documents that have already been scanned and newly created documents that were not scanned yet.&#x20;

This feature is possible using most available connectors.&#x20;

Check the user guide for your connector to confirm if it is capable of delta migration and to see if there are any pre-requisites or limitations.

#### Prerequisites

You need to have the initial batch of objects scanned, transformed and imported successfully. In the target system the imported objects need to be present.

{% hint style="warning" %}
The original MigSet/s **must not** be changed by resetting or unlocking the objects or by deleting the MigSet. If this happens, update objects **cannot be imported**.
{% endhint %}

#### Scanning

You can start a delta migration by running either the same original scanner or any scanner that will pick up already scanned objects. If these objects have been modified since the original scan, they will be scanned again as an **update** object, otherwise they will be ignored. New objects, that were not scanned before will be scanned normally.

Update objects can be identified by having the **is\_update** attribute value set to **1** or **True**.

{% hint style="info" %}
Please check the configuration for your scanner for any update specific options
{% endhint %}

#### MigSet

Since the original MigSet needs to be left untouched with all objects intact, and the delta migset needs the same rules, the best way to do this is to create **a copy of the original migset**.&#x20;

Transform the migset used for the Delta Migration, as you would normally.

#### Importing

The Delta MigSet can be selected in the same Importer used for the original import, or in any other importer as required.&#x20;

The Delta Import will create all new objects normally and it will locate already imported objects in the target system and update their metadata and content as needed.

**To delete an Import Run** select the desired import run and either right-click it and select **Delete Import Run** or click the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/uqUWqr461sqvtpYzFCx6/image.png) in the toolbar.

## Schedulers

A **Scheduler** is used to automate an **end to end migration** and is useful when needing to make regular delta scans and imports for a Source System that changes often.

Version 24.3 of migration-center brings the Scheduler functionality to an installation using a **PostgreSQL database**.\
Due to the fact that Postgres does not have an integrated feature equivalent to the **Oracle DBMS\_SCHEDULER** used when connected to an Oracle DB, the Postgres scheduler functionality comes with a needed architectural change.

Please see the [System Architecture](https://docs.migration-center.com/24.3/installation-guide/system-architecture) page for a detailed view on how the components interract on the two databases with regards to the scheduler.

### PostgreSQL Scheduler Architecture

On a **PostgreSQL installation** of migration-center the scheduled jobs are scheduled and started by the **REST server** running on the **WebClient's Tomcat server** which will send commands to the Jobserver and control the scheduling process.

{% hint style="warning" %}
This means that the WebClient service needs to be **up and running** in order for the Scheduler functionality to work with a PostgreSQL database.
{% endhint %}

This change also means that the REST server needs to have the database's credentials saved so that it can perform it's tasks regardless of if a user is logged into the WebClient or not.

When you first open the Schedulers tab on a new WebClient installation connected to a Postgres DB, you will be prompted to enter a **database User and Password**. We recommend you use the same default **fmemc user** you used to log into the migration-center database. After these credentials are validated and saved, the REST server will constantly check with the database for any Scheduler configurations that need to be executed.

<figure><img src="https://1950166256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FamYB2usDVu8eTAxnmI9n%2Fuploads%2FGFDNnQ3sfn2BWKQkCndH%2Fimage.png?alt=media&#x26;token=ba24d8c1-70e4-4f64-862e-1925d2ea68c8" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
If these credentials become invalid after they were first entered, you will be propted with a new window to Update the user credentials.
{% endhint %}

#### **Considerations**

{% hint style="warning" %}
The email reporting feature is not currently implemented in the PostgreSQL scheduler.
{% endhint %}

{% hint style="danger" %}
**Multiple WebClient Installations!**

Even though the mechanism for running schedulers on Postgres should be able to handle multiple WebClient installations to avoid conflicts, we **do not recommend this!**\
And in a future release this will be enforced to have only a single REST server responsible for scheduling a specific Postgres database.
{% endhint %}

### Oracle Scheduler Architecture

On an Oracle installation of migration-center the scheduled jobs are scheduled and executed by the Oracle **DBMS\_SCHEDULER**. Therefore the Oracle DB will control the scheduling process end commands to the MC Jobserver.

{% hint style="warning" %}
To run a Scheduler with an **Oracle** database, the **Database Server** also needs to access the **Jobserver** configured for the Scanner and Importer on the selected **Port**. The reason being that the Oracle Database will start the jobs directly.
{% endhint %}

### Scheduler Workflow

1. It will run the selected **Scanner**
2. If there are objects in the **Scan Run**, it will create a copy of the selected **Migset**, assign the Scan Run to it and **Transform** the objects
3. If there are **Validated Objects** after the transformation, it will assign the migset to the **Importer** and run it.
4. If **Email Report** is set it will send the email as configured, when the import ends.

**To create a Scheduler** click on the **Schedulers** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/EV4aB24hY9aPQNAE6R73/image.png) in the sidebar and on the **Add** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/s3uk9HwKPAAsUf8A2woD/image.png). See the following instructions on how to configure the rest of the Scheduler configuration.&#x20;

**To modify a Scheduler**, select it and either right-click it and then select **Edit Scheduler** on the context menu, or click the **Edit** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/yEGOsmVSCIhOAS2DG6sl/image.png) on the toolbar. When finished, click **SAVE**.

**To delete an Scheduler**, select it and either right-click it and click **Delete Scheduler** on the context menu, or click the **Delete** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/RNqcE1wxu9f0v6T0GntL/image.png) on the toolbar. Then, in the **confirmation** dialog box, click **DELETE**.

### Configuration <a href="#scheduler-configuration" id="scheduler-configuration"></a>

In the **CONFIGURATION** tab, configure the **Details** of your scanner, such as **Name**, **Description** and whether you want to set the scheduler to **Active**.

Next, select the **Scanner**, **MigSet** and **Importer** by clicking the respective buttons.\
The list of Migsets will be filtered to match the selected Scanner type and the list of Importers will be filtered to match the selected Migset type.

### Frequency

In the **FREQUENCY** tab, configure the **Start Date** when this scheduler will be running from and either the **End Date** or the number of runs after which it will stop.

In the **Interval** section configure a timeslot and the **Frequency** at which the Scheduler will start.

In the **Email Report** section you can set an **Email Address** where the scheduler will send reports and whether you want the report send in case of **Success** or in case of **Error**. \
You also need to have an **SMTP Server** to use for sending the email reports.

In the **IMPORTED OBJECTS** tab, you can see the list of objects imported by your scheduler.

In the **ERROR OBJECTS** tab, you can see the list of errors that may have occurred during the scheduled migration.\
When finished, click **Save** on the top right corner.

### History <a href="#scheduler-history" id="scheduler-history"></a>

In the **HISTORY** tab, you can see all the runs of the selected Scheduler.&#x20;

**To delete a Scheduler Run** select it and click on the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ZCFeD3P34wRkG0oKUDXf/image.png). Click on **DELETE** if you want to also delete the scan run, migset and import run along with all the imported objects. Or click on **JUST THE RUN** to delete only the Scheduler Run from history.

**To view the Imported Objects or Error Objects**, select a run and click on their respective icons.

### Imported Objects <a href="#scheduler-imported-objects" id="scheduler-imported-objects"></a>

Here you can view the list of **Imported Objects** for the selected Scheduler Run.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/tjIsHBYwwOW13T1jWqGs/Imported%20Objs%20Scheduler.png" alt=""><figcaption></figcaption></figure>

The **Imported Objects** view features are common among the other **Object Views**. Please see [**Source Objects**](#scanner-objects) for details.

### Error Objects <a href="#scheduler-error-objects" id="scheduler-error-objects"></a>

Here you can view the list of **Error Objects** for the selected Scheduler Run.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/9JLZxjwaHw8BNEdTGLXX/Error%20objs%20scheduler.png" alt=""><figcaption></figcaption></figure>

The **Error Objects** view features are common among the other **Object Views**. Please see [**Source Objects**](#scanner-objects) for details.

## Dashboard

The **Dashboard** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/Isj2iA2fMixlicM0JdI7/image.png) is a new feature added to the **WebClient** which provides reports on the objects present in your migration-center Database.&#x20;

### Migration Status

The **Migration Status** tab of the Dashboard presents the total number of objects in your Database, divided between the 4 states: **Unprocessed**, **In Progress**, **Errors** and **Imported**.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/sAgmmDHaxQlxp6LK93Ev/Dashboard%20Mig%20Status.png" alt=""><figcaption></figcaption></figure>

From the dropdown menu on the left you can chose to display **Numbers** or **Percentages** on your graph.

The toolbar to the right allows you to change the type of the chart, offering a **Pie Chart** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/kwXE2bgJmiOkg95cdTCO/image.png) , **Bar Chart** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/40cei8wPltIdx83uJr5o/image.png) and **Donut Chart** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/0ZxNzPOwWpmczA5JHgMa/image.png).

The chart of your choosing can then be **exported** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3MDxYgHgjdTPdrHEx2ad/image.png) as a **SVG**, **PNG** or **CSV** file using the drop down menu to the right.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7blj28ssqW7ytH7fl4WQ/Dashboard%20Bar%20Chart.png" alt=""><figcaption></figcaption></figure>

### Object Distribution

The **Object Distribution** tab provides more detailed reporting for specific source object types or specific **Scanners**.&#x20;

The chart on the left shows the scanned object distribution yearly, while the chart on the right shows the scanned objects distribution monthly for a selected year.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ZaOdcWlWXtQNG1B4gVj0/Object%20Distribution.png" alt=""><figcaption></figcaption></figure>

**To load all data of a source object type**, first selected the required type from the **Source Type** dropdown and then press **Load Data**.

**To load the data of a specific scanner**, after selecting the required **Source Type**, press the **Select Scanner** button.

**To select the required year period**, from the toolbar of the first chart, press **Zoom In** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/xUkJsoHoaE9Ex2jPmI3V/image.png) or **Zoom Out** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/2Gsm7gKWAMpZTw5vsXPQ/image.png) or press **Selection Zoom** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/wqs8AGxo5fg6ES9NeLXA/image.png) to drag-select the needed years.

**To return the chart to its default state** press the **Reset Zoom** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/VERNJituNBcPVedn73ja/image.png) button.

**To export the charts**, press the **Export** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/3MDxYgHgjdTPdrHEx2ad/image.png) to **SVG**, **PNG** or **CSV** for the respective chart.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/wPu2QKwiIhn6wh84Oymk/export%20chart.png" alt=""><figcaption></figcaption></figure>

## Object Search

You can search for any **Source / Target Object** in the **Object Search** section using values of **Internal**, **Source** or **Target** attributes.

### Search criteria

When searching by **Internal Attributes**, you can select the **Attribute** name from a dropdown of predefined attributes. Afterwards enter the **Value** by which you want to search.

When searching by either **Source Attributes** or **Target Attribtues** you have to manually enter the **Attribute Name**. Afterwards enter the **Value** by which you want to searc&#x68;**.**

{% hint style="danger" %}
When searching by **Target Attributes**, you can only use the **Target Object Type Name** that a rule is associated to. You cannot seach by rules that are not associated to any target object.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/dmIlrsXxPt3wDz6u3KQA/image.png" alt=""><figcaption><p>Search criteria</p></figcaption></figure>

Start the search by clicking the **Search** button.

Stop the search by clicking the **Cancel** button that appears when a search is in progress.

{% hint style="success" %}
All searches are run in the **background**. You can leave the **Object Search** section after starting a search and return to at a later time to check if it's finished.
{% endhint %}

### Search Results

When a search query finishes, results start loading in the **Objects** table.

{% hint style="success" %}
You can nagivate to each of the **Scanner**, **Scan Run**, **Migset**, **Importer** and **Import Run** configurations that the object is contained in, by clicking on the **ID** value in the row of the object.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/maVBDQJg5RXAhcUiL4Ri/image.png" alt=""><figcaption><p>Object search results</p></figcaption></figure>

You can view the **Source Attributes** and **Target Attribtues** (if they exist) of each object by selecting an object and clicking on the following icons in the toolbar ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7Orl7ZYXauXHtJ3g0oJ7/image.png) or by right clicking an object and selecting the **View Source Attributes** or **View Target Attributes** entries in the context menu.

{% hint style="danger" %}
When viewing **Target Attributes**, only the ones that are associated to a **Target Object Type** will show up. To view all **migset target attributes**, go to the migset the object is in.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/dsNLSB9ZZAHqsaOeQeQL/image.png" alt=""><figcaption><p>Source Attributes view</p></figcaption></figure>

### Object History

The **Object History** view is a list of all **Scan** or **Import** operations that an object has gone through, along with the the **Job Run ID**, **Source ID** and **Target ID**.

To open the view click on the collapsed header on the bottom of the screen. You can also resize it by dragging the space between the two tables.

To load the history of a specific object just select it in the results table.

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/1cOlDfWd0GILJhi51eSO/image.png" alt=""><figcaption><p>Object History view</p></figcaption></figure>

To view the **History Attributes** of a specific operation right click it and select the **View History Attributes** entry in the context menu. These attributes will be either Source or Target depending on the type of the operation.&#x20;

<figure><img src="https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/ayMIBjVKyHwA119iTJM6/image.png" alt=""><figcaption><p>History Object Attributes view</p></figcaption></figure>

## Configuration

### Job Servers

A **Job Server** definition is needed to run jobs like scanning or importing documents.

**To create a Job Server definition**, click the **Configure** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YpnFUV1D63BJZMOnZJYF/image.png) button on the sidebar, in the **JOB SERVERS** tab click the **Add** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/s3uk9HwKPAAsUf8A2woD/image.png) on the buttons bar and then configure the Job Server parameters in the **Create** dialog box.&#x20;

![new Job Server definition](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/sa6uucrIrWjAYv40AhMp/image.png)

Enter a **Name**, **Location** (where a Job Server is installed), **Port** (9700 by default) and a **Description** (optional) for your Job Server definition. \
When finished, click **CREATE**.

**To modify an existing Job Server**, select the desired Job Server and either right-click it and then select **Edit Job Server** on the context menu, or click the **Edit** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/S7PjXvnflXR7hTa6mgke/image.png) button on the buttons bar. Then, in the **Edit** dialog box, configure the parameters accordingly. When finished, click **SAVE**.

**To delete an existing Job Server**, select the desired Job Server and either right-click it and click **Delete Job Server** on the context menu, or click the **Delete** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/vFE8ZTJcB1KHJ42yeWgM/image.png) button on the buttons bar. Then, in the **Confirm Delete** dialog box, click **DELETE**.

### Object Types

**Object Types** in migration-center are a representation of a document or other objects in a Target System where you are importing. They are used in the **Associations** section of a migset and any object needs to be associated to at lest **one** Object Type to be able to **Transform,** **Validate** and **Import** it.

**To create an Object Type** click the **Configure** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YpnFUV1D63BJZMOnZJYF/image.png) button on the sidebar, in the **OBJECT TYPES** tab and click on the **Add** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/S83cMRXbb8oTtjhqfssy/image.png). Enter a **Name** and an optional **Description**, then click on the **SAVE** button.

**To delete an Object Type** select the Object Type and click on the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/7Wv9JfZ4RrpHcMlXOH6N/image.png). Confirm the action in the confirmation dialog.

**To copy an Object Type** select the Object Type and click on the **Copy** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/FfmqYny0PRbZADam3aLS/image.png) in the toolbar. Then click on the **SAVE** button.

{% hint style="info" %}
Object Types currently used in MigSets cannot be deleted.
{% endhint %}

**To export an Object Type to CSV** select the Object Type and click on the **Export** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/Vy0lYOVvS6bcURlNhC8n/image.png).

**To import an Object Type from CSV** click on the **Import** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YUqr05yDKRljRtl5yQ8M/image.png) and select the CSV file. Set the desired **Name** of the newly imported Object Type and click on the **OK** button.

{% hint style="warning" %}
Only CSV files using comma "," as separator are supported. See the CSV "RFC 4180" specification.&#x20;
{% endhint %}

#### Adding attributes

The attributes of an object type need to match the attributes or fields in the target system in **Name** and **Type**. If the attributes do not accurately represent the target system this can result in object values passing validation and causing errors during the Import phase.

**To add a new Attribute** select the Object Type, then click on the **Add Attribute** button![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/cl5rtcoeIs7JSgv36POm/image.png). Set the attribute **Name**, **Type** (**String**, **Number**, **Date** or **Boolean**), **Minimum** and **Maximum** length allowed for the values of this attribute, if it allows **Repeating** values or not and if it is **Required** (mandatory to have a value). \
You can also set a **Regular Expression** to determine specific formats that the values are allowed to have.

**To delete an Attribute** select the Object Type and click on the **Red X** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/jWIjCMjVBqyewHJEQltc/image.png) of the attribute you want to delete. When finished click on **SAVE**.

### Mapping List

A **Mapping List** is a collection of *key* - *value* pairs that can be used in Transformation Rules using the **MapValue()** function.

**To create a Mapping List** click the **Configure** ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/YpnFUV1D63BJZMOnZJYF/image.png) button on the sidebar, in the **MAPPING LIST** tab and click on the **Add** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/S83cMRXbb8oTtjhqfssy/image.png). Enter a **Name** and click on the **SAVE** button.

**To copy a Mapping List** select the desired mapping list and click on the **Copy** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/FfmqYny0PRbZADam3aLS/image.png) in the toolbar.

**To delete a Mapping List** select the desired mapping list and click on the **Delete** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/adqBNnshv8DF3FPJaHh4/image.png) in the toolbar.

Checking **Exact Match** makes the mapping list match key values only if they are exactly the same.&#x20;

Using **Exact Match** unchecked will result in the **mapValue** and **mutliColumnMapValue** functions to match source strings that contain the key in the mapping list as a substring.

{% hint style="info" %}
i.e. source string "My key here" in a mapValue function will match a key in the mapping list with the value "key".
{% endhint %}

{% hint style="warning" %}
Partial matches **do not** work the other way around. A source string "sample" in a mapValue function will **not** match a mapping list key with the value "Test sample 1".
{% endhint %}

Checking **Case Sensitive** makes the mapping list match  key values only if the case matches. Otherwise matches will be made regardless of case.

#### Adding entries

**To add a new entry manually** click on the **Add Value** button ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/vbQBqnvwTxwcgH1ZWIrT/image.png), enter the values for the **Key** and the **Value** columns. When finished click on **SAVE**.

**To paste entries** first copy values either from an Excel table or from a text file that has the values tab separated, then click on the **Paste Values** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/lMk7pDnqDw6UK9YPUEyx/image.png). When finished click on **SAVE**.

**To export entries to a CSV** select the mapping list and click on the **Export to CSV** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/bVn2E6oiZSOmPdkAho8T/image.png).

**To import entries from CSV** create or select a mapping list, click on the **Import to CSV** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/suYbwx2CWEcv1D8zW3S7/image.png), Drag and Drop the CSV file, check the **Overwrite existing entries** option if you want existing entries with the same key as an imported one to be replaced, then click on **Upload**.\
After the import is finished you will receive a message with the number of successfully imported entries and a list of any error entries, if there are any. \
If the number of errors exceeds 1000, the import is canceled.&#x20;

{% hint style="warning" %}
Only CSV files using comma "," as separator are supported. See the CSV "RFC 4180" specification.&#x20;
{% endhint %}

**To delete an entry** select the mapping list and click on the **Red X** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/jWIjCMjVBqyewHJEQltc/image.png) of the entry you want to delete. When finished click on **SAVE**.

**To delete all entries** select the mapping list and click on the **Clear Values** icon ![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/HGa4eXSg0hi3tg5NtODT/image.png)on the mapping list values toolbar. When finished click on **SAVE**.

#### Multi Column Mapping Lists

The Multi Column Mapping List is a new feature usable only with the migration-center WebClient.

**To make a mapping list Multi Column** create or select a mapping list, click on the **Customize Columns** icon![](https://content.gitbook.com/content/amYB2usDVu8eTAxnmI9n/blobs/yv5rYOQ6oW0tE5zBr6AF/image.png)and add up to 10 **Value Columns**. Afterwards enter or import your entries as you would normally. When finished click on **SAVE.**&#x20;

#### **Using a Mapping List**

**To use a regular Mapping List**, in the transformation rule select the **MapValue()** function. Set the value to be matched with the values in the **Key** column, select the **Mapping List** you want to use and whether or not you want the function to report a transformation error when a value is not matched.

**To use a Multi Column Mapping List**, in the transformation rule select the **MultiColumnMapValue()** function. Set the first parameters as you would for a regular mapping list and also specify the name of which **Value** column you want the function to return when finding a match.&#x20;

### Licence

Here you can enter a new License key for the migration-center database installation you are currently connected to.

{% hint style="info" %}
After upgrading the migration-center database to a newer version, changing the license key is not mandatory.&#x20;
{% endhint %}

{% hint style="warning" %}
Entering a license key with different migration paths, will **NOT** update the list of available Connector or Migset types.&#x20;
{% endhint %}

### About

The **About** section provide information on your current installation as follows:&#x20;

Version of migration-center components: **UI version**, **API version** and **Database version.**

The **Java version** that is running the **WebClient Apache Tomcat.**

The **Oracle version** of the migration-center Database that you are currently connected to.

Licence Information: **Licensed to** and **Licence validity.**
