Migrate Workspaces

This page details the specific configuration and input options for the Migrate Workspaces Orchestrator

This guidance should be read in conjunction with the Common Configuration page which details the standard application configuration.

Operation Name

Migrate

Common Configuration

There is common configuration available within this job Orchestrator. The common configuration options can be found here.

Purpose

The key purpose for this Orchestrator is to target and migrate directory structures, including metadata, from a target to a destination. The primary use case of this orchestrator is for archiving purposes.

Think of it as a batch copy/cut-and-paste tool that:

  • Takes a list of locations to migrate (like root folders)

  • Copies everything inside them (subfolders and files) to a new location

  • Deletes the originals after successful copying

  • Tracks what was moved, what succeeded, and what failed

  • Records all activity for auditing purposes

Target and Destination are configurable with the following configurations currently supported:

  • iManage → Azure Blob Storage

  • Azure Blob Storage → iManage

  • iManage → Local Filesystem

  • Local Filesystem → iManage

  • Azure Blob Storage → Local File System

  • Local Filesystem → Azure Blob Storage

Metadata for each root, folders and files are stored alongside in a JSON file with the .tec.json file extension. This shouldn’t be edited, and is used to persist the metadata for each entity after it’s migrated. This file will only be created if the integration doesn’t have a built in metadata mechanism, such as Local and Azure Blob Storage.

Known Limitations

These will be addressed in future releases

  • Importing into iManage will create a new Workspace each time. This means that if an import happens multiple times (i.e. a failure occurred in a previous run), a new workspace will be created each run.

    • It is recommended that if this is a concern, to configure Administrate not to delete the target on migrate, review the migration and then manually delete the target if happy.

    • The reason for this limitation is due to Administrate not being aware of previous migrations, and so is unable to determine whether a particular workspace has been imported previously.

  • This orchestrator cannot be used to transfer between iManage libraries. Use the Move orchestrator to facilitate this.

Input Data Schema

Data can be read via SQL or CSV and requires the following data headers and values:

CSV

Headers

Description

Mandatory

Expected Value

Id

This is the row ID

Yes

Numeric value

TargetIdentifier

The target location of the root to migrate; for local, this is the path, for iManage this is the Workspace ID

No (unless TargetObjectSearchQuery and TargetObjectSearchContainer are blank).

Takes priority over the search query

The explicit identifier for the workspace or root folder i.e. ‘Active!1234’ or the root blob folder in the configured container or a path to a local root folder

TargetObjectSearchContainer

Refers to the target container

No (unless TargetIdentifieris blank).

iManage library identifer i.e. ‘Active’ or the Azure Blob Container name

TargetObjectSearchQuery

A JSON object which contains a dictionary matching any applicable profile parameters

No (unless TargetIdentifierblank)

JSON format i.e. {"custom1": "*", "custom2": "test"}

If using csv input then escaped values need to be used for multiple parameter queries.

The following keys can be provided:

  • custom 1-12, 17-20, 23-30

  • name

DestinationIdentifier

The destination container location where the migration will complete

Yes

The identifier for the destination. For iManage, this is the Library, for Blob this is the container name and for local this is a path

Processed

Indicates if the row has been processed

Yes

0 or 1

SQL

SQL Input uses the same values as the CSV input above. The SQL Schema is detailed below:

SQL
CREATE TABLE MigrateInput (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Processed BIT NOT NULL,
    TargetIdentifier NVARCHAR(MAX) NULL,
    TargetObjectSearchContainer NVARCHAR(MAX) NULL,
    TargetObjectSearchQuery NVARCHAR(MAX) NULL,
    DestinationIdentifier NVARCHAR(MAX) NOT NULL
);

Job File Options

This section details the configurable options within the orchestrator.

Configuration

Description

Expected Value

Target

Confirms the source target

Local IManage AzureBlob

Destination

Confirms the set destination

Local IManage AzureBlob

DeleteTargetAfterMigrated

If enabled then the application will delete the source files, folders and workspace after a successful move

true false

Enabled

Whether the operation should be run or not

true false

ActionMultipleQueryResults

If search is run, and multiple results are found, will the run continue

true false

MigrateFromCSV

If the system is going to read a CSV document to build a root out rather than a starting folder.

If set to true then Target must be set to ‘Local’ and Destination set to ‘iManage’

true false


Integrations

If a specific integration is not being used, it does not need to be included in the configuration.

Each provider requires its own specific data to connect to the service.

If you are using multiple providers, you will need to ensure both are added and valid (Administrate will warn if data is missing).

iManage

This follows the same pattern as other orchestrators with iManage integrations.

The simplest configuration requires:

  • URL - The URL for iManage.

  • Username - The username for the account to log in as.

  • Password - The password for the account to log in as.

"IManage": {
    "URL": "<https://cloudimanage.com/>",
    "Username": "{Username}",
    "Password": "{Password}"
}

Azure Blob Storage

Azure Blob Storage allows access to the service with two pieces of information that can be generated in Azure:

  • AccountName - The account name in Azure.

  • Key - The key provided by Azure (these are generated in Azure and can be changed at any time for security purposes).

With these two pieces of information, the service is granted access to the storage account.

"AzureBlob": {
    "AccountName": "{AccountName}",
    "Key": "{AccountKey}"
}

Local

The local integration does not require any configuration. However, due to the pre-checks currently in Administrate, an empty stub is required.

ℹ️ Note
This will be removed in a future release.

To satisfy the pre-checks, you can add this:

"Local": {
    "stub": ""
}

Sample Job File

This is an example Job File for the Migrate Orchestrator. This includes all options for each integrations, however as mentioned above, if a specific integration is not being used, it does not need to be included in the configuration.

JSON
{
  "Operation": "Migrate",
  "Options": {
    "Enabled": true,
    "ActionMultipleQueryResults": false,
    "Target": "IManage",
    "Destination": "AzureBlob",
    "DeleteTargetAfterMigrated": false,
    "MigrateFromCSV": false
  },
  "InputType": "SQL",
  "Inputs": {
    "CSV": {
      "Path": "PATH_TO_CSV"
    },
    "SQL": {
      "ConnectionString": "",
      "Table": "MigrateInput",
      "Schema": "dbo"
    }
  },
  "Outputs": {
    "Console": {
      "Enabled": true,
      "SubscribedTo": ["Application:*:*"]
    },
    "CSV": {
      "Handlers": [
        {
          "Enabled": true,
          "Path": "PATH_TO_CSV",
          "FileNameTemplate": "Administrate_Report_<DATETIME>",
          "SubscribedTo": [ "*:*:*" ]
        }
      ]
    },
    "SQL": {
      "Handlers": [
        {
          "Enabled": true,
          "ConnectionString": "",
          "Table": "MigrateOutput",
          "Schema": "dbo",
          "SubscribedTo": [ "*" ]
        }
      ]
    }
  },
  "Integrations": {
    "IManage": {
      "URL": "https://cloudimanage.com",
      "Username": "",
      "Password": ""
    },
    "Local": {
      "stub": ""
    },
    "AzureBlob": {
      "AccountName":"",
      "Key":""
    }
  }
}

Output Events

These output events are specific to the Migrate Workspaces Orchestrator and work in addition to the common output events detailed in Common Configuration

The following output events can be persisted via the ‘Subscribed To’ configuration

Target

Action

Status

Full Event Identifier

Root

Migrate

success skipped failed

root:migrate:success

root:migrate:skipped

root:migrate:failed

Folder

Migrate

success skipped failed

folder:migrate:success

folder:migrate:skipped

folder:migrate:failed

File

Migrate

success skipped failed

file:migrate:success

file:migrate:skipped

file:migrate:failed

Placeholder

Migrate

success skipped failed

placeholder:migrate:success

placeholder:migrate:skipped

placeholder:migrate:failed

UnknownChild

Migrate

success skipped failed

unknownchild:migrate:success

unknownchild:migrate:skipped

unknownchild:migrate:failed

Application

Migrate

success skipped failed

application:migrate:success

application:migrate:skipped

application:migrate:failed

These should be listed in the Orchestrator in the following format ‘Target:Action:Status’.

The event output schema is shown below:

SQL
CREATE TABLE MigrateOutput(
	Id INT IDENTITY(1,1) PRIMARY KEY,
	CorrelationId VARCHAR(36) NOT NULL,
	EventTime DATETIMEOFFSET NOT NULL,
	Action VARCHAR(MAX) NULL,
	Status VARCHAR(MAX) NULL,
	Message VARCHAR(MAX) NULL,
	DataSourceRowId VARCHAR(25),
	TargetObjectType VARCHAR(25) NOT NULL,
	TargetSearchQuery nvarchar(max) NULL,
	TargetSearchQueryResultCount int NULL,
	TargetSearchQueryResultList nvarchar(max) NULL,
	TargetObjectIdentifier VARCHAR(max),
	DestinationObjectIdentifier VARCHAR(max) NULL,
	EntityTargetId VARCHAR(MAX) NULL,
	EntityDestinationId VARCHAR(MAX) NULL,
	EntityAction VARCHAR(MAX) NULL,
	EntityStatus VARCHAR(MAX) NULL,
	EntityDetails VARCHAR(MAX) NULL
)

Failure and Skip Behaviour

This Orchestrator follows the standard behaviour for failed/skipped records:

Skipped = Scenarios configured to not be processed for a specific reason

Failed = Administrate tried to perform an action on the target or destination integration and an unexpected error occurred. e.g. iManage connection dropped and Administrate was unable to move a folder within the workspace.

iManage Behaviour

This section details the different behaviour across different versions of iManage i.e. On-Prem, iManage Cloud and Cloud iManage, as well as known limitations for the orchestrator.

Limitations:

  • Subclasses associated with workspaces which are not present in the destination library will need to be added manually before the workspace can be successfully moved.

  • Enterprise users in the source library not present in the destination library will need to be manually added before the move operation can complete successfully.

Skip events:


Troubleshooting