Mass Operations (.NET)

The Mass Operations .NET API allows for the bulk processing of Documents and RDOs in Relativity for the following operations:

  • Edit
  • Move (Document only)
  • Delete
  • Replace
  • Tally/Sum/Average
  • Export to file
  • Save as list
  • Copy (RDO only)

Code Samples

These code samples utilize a .NET service proxy. See the topic Client .NET proxy for details on working with a service proxy.

Mass copy

Initiates a mass copy operation.

Method

Task<MassOperationResult> MassCopyAsync(int workspaceID, MassCopyRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the copy operation.
Copy
int workspaceId = 111111; //ID of workspace
MassCopyRequest request = new MassCopyRequest {
    ArtifactTypeID = 1000056,
    ParentArtifactID = 1003663,    // parent RDO or 'system' artifactID
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN VIEW 1056059"
    }
};
 
MassOperationResult result = await massOperationManager.MassCopyAsync(workspaceId, request);
 
MassOperationProcessState status = await massOperationManager.CheckProgress(workspaceId, result.ProcessID);

while (status.State != Relativity.MassOperations.Services.Interfaces.v1.Enums.MassProcessState.Completed) {
    await Task.Delay(1000);
    status = await massOperationManager.CheckProgress(workspaceId, result.ProcessID);
}

Mass move

Initiates a mass move operation.

Method

Task<MassOperationResult> MassMoveAsync(int workspaceID, MassMoveRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the move operation.
Copy
int workspaceId = 1111111; //ID of Workspace
MassMoveRequest request = new MassMoveRequest() {
    ArtifactTypeID = 10,
    DestinationFolderArtifactID = 1055389,
    Query = new QueryRequest {
        Condition = "('Folder Name' IN ['responsive'])"    // can also use folder artifactID
    }
};
 
MassOperationResult result = await massOperationManager.MassMoveAsync(workspaceId, request);

Mass edit

Initiates a mass edit operation.

Method

Task<MassOperationResult> MassEditAsync(int workspaceID, MassEditRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the edit operation.
Copy
int workspaceId = 1111111; //ID of workspace
MassEditRequest request = new MassEditRequest() {
    ArtifactTypeID = 10,
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN SAVEDSEARCH 1043981"
    },
    Fields = new EditField[] {
        new EditField {
            ArtifactID = 1035387,
            Value =
            new MultipleArtifactEditSelectionValue() {
                ArtifactsToSet = new List<ArtifactRef> {
                        new ArtifactRef { ArtifactID = 1055381 },
                        new ArtifactRef { ArtifactID = 1038090 }
                },
                ArtifactsToUnset = new List<ArtifactRef> {
                        new ArtifactRef { ArtifactID = 1055382 },
                        new ArtifactRef { ArtifactID = 1038089 }
                }
            }
        }
    }
};
 
MassOperationResult result = await massOperationManager.MassEditAsync(workspaceId, request);

Mass delete

Initiates a mass delete operation.

Method

Task<MassOperationResult> MassDeleteAsync(int workspaceID, MassDeleteRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the delete operation.
Copy
int workspaceId = 1111111; //ID of Workspace
MassDeleteRequest request = new MassDeleteRequest() {
    ArtifactTypeID = 10,
    DocumentDeleteOptions = Relativity.MassOperations.V2.Enums.DocumentDeleteOptions.DeleteDocumentAndAllAssociatedFiles,
    ForceDelete = true,
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN [1055430, 1055431]"
    }
};
 
MassOperationResult result = await massOperationManager.MassDeleteAsync(workspaceId, request);

Mass replace

Initiates a mass replace operation. Note that mass replace can only be performed on fixed-length text and long text fields.

Method

Task<MassOperationResult> MassReplaceAsync(int workspaceID, MassReplaceRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the replace operation.
Copy
int workspaceID = 1111111; //ID of workspace
MassReplaceRequest request = new MassReplaceRequest() {
    ArtifactTypeID = 10,
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN VIEW 1042421"
    },
    Fields = new ReplaceField[] {
        new ReplaceField {
            ArtifactID = 1038073,
            ReplaceOptions = new ReplaceOptions {
                Options = Relativity.MassOperations.V2.Enums.ReplaceActionOptions.ReplaceEntireField    // replace current value with new value
            },
            ReplaceAction = new ReplaceAction {
                Options = Relativity.MassOperations.V2.Enums.ReplaceWithOptions.Text,
                ReplacementField = new FieldRef { ArtifactID = 1038073 },
                ReplacementText = "new text value"
            }
        },
        new ReplaceField {
            ArtifactID = 1003667,
            ReplaceOptions = new ReplaceOptions {
                Options = Relativity.MassOperations.V2.Enums.ReplaceActionOptions.SearchFor,    // replace substring with new value
                Value = "ZIPPER"
            },
            ReplaceAction = new ReplaceAction {
                Options = Relativity.MassOperations.V2.Enums.ReplaceWithOptions.Text,
                ReplacementText = "ZIPPY"
            }
        }
    }
};
 
MassOperationResult result = await massOperationManager.MassReplaceAsync(workspaceID, request);

Save-as-list

Initiates a save-as-list operation.

Method

Task<MassOperationResult> MassSaveAsListAsync(int workspaceID, MassSaveAsListRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the save-as-list operation.
Copy
int workspaceID = 1111111; //ID of workspace
MassSaveAsListRequest request = new MassSaveAsListRequest {
    ArtifactTypeID = 10,
    ListName = "Important docs",
    Notes = "These are important docs",
    Options = Relativity.MassOperations.V2.Enums.SaveAsListOptions.CreateNewList,
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN VIEW 1042421"
    }
};
 
MassOperationResult result = await massOperationManager.MassSaveAsListAsync(workspaceID, request);

Tally/sum/average

Initiates a tally/sum/average operation.

Method

Task<IEnumerable<TallySumAverageResult>> TallySumAverageAsync(int workspaceID, MassTallySumAverageRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the operation.
Copy
int workspaceID = 1111111; //ID of workspace
MassTallySumAverageRequest request = new MassTallySumAverageRequest {
    ArtifactTypeID = 10,
    Operation = Relativity.MassOperations.V2.Enums.TallySumAverageOptions.Tally,
    Field = new FieldRef { Name = "Number of Attachments" },
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN SAVEDSEARCH 1056050"
    }
};
 
IEnumerable<TallySumAverageResult> results = await massOperationManager.TallySumAverageAsync(workspaceID, request);

Export to file

Initiates a export to file operation.

Method

Task<IKeplerStream> MassExportToFileAsync(int workspaceID, MassExportToFileRequest request)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation takes place.
  • request: A request object containing information needed to perform the operation.
Copy
int workspaceID = 1111111; //ID of workspace
MassExportToFileRequest request = new MassExportToFileRequest {
    ArtifactTypeID = 10,
    EscapeFormulas = true,
    ExportFileFormat = Relativity.MassOperations.V2.Enums.ExportFileFormat.Csv,
    ExportEncodingType = Relativity.MassOperations.V2.Enums.ExportEncodingType.UnicodeUTF8,
    ViewID = 1042421,
    Query = new QueryRequest {
        Condition = "'ArtifactID' IN SAVEDSEARCH 1056050"
    }
};
 
IKeplerStream exportStream = await massOperationManager.MassExportToFileAsync(workspaceID, request);
using (FileStream file = File.Create(@"C:\ExportResults.csv")) {
    await exportStream.GetStreamAsync().Result.CopyToAsync(file);
}

Return state information for a specific operation

Returns state information on a specified operation.

Method

Task<MassOperationProcessState> CheckProgress(int workspaceID, long processID)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation was run.
  • processID: The identifier of the job. See the processID property on the MassOperationResult model.

Cancel a specific operation

Cancels the specified operation.

Method

Task CancelAsync(int workspaceID, long processID)

Parameters
  • workspaceID: The artifactID of the workspace in which the operation is running.
  • request: The identifier of the job to cancel.

Considerations

  • Mass operations are run on the Mass Operations Manager agent (except for Tally/Sum/Average and Export to file).
  • The condition property on mass operation request models uses Object Manager query syntax.