The Framework for Interoperable Media Services or FIMS, is an open standard for service oriented architecture (SOA). This approach replaces the tightly coupled devices and functions found in traditional systems. FIMS allows you to use a set of media services that are interoperable, interchangeable and reusable.
The Signiant FIMS Compliant API is based on the FIMS 1.1 standard. This service allows an orchestration system to invoke a Signiant workflow using a FIMS compliant API.
To use the FIMS API, you must have Signiant Manager installed, a familiarity with using an REST or SOAP API, and an understanding of the FIMS architecture.
An example set of REST functions are included in the Signiant Manager installation bundle, separate from the Manager installer, in the /support/fims_samples
directory.
For more information about the FIMS project, see the FIMS GitHub Organization
The FIMS API supports the job and Agent queues as Signiant Resource Controls. These controls allow for the queuing of concurrent jobs and transfers within the system, as well as automated bandwidth provisioning.
Each submitted job can include a notification callback as a webhook message through the job replyTo
or faultTo
fields:
replyTo
URL is sent job status changesfaultTo
URL is sent job error messagesThe TransferFaultType
object includes details about failure notifications and the innerFaultType
element contains the return code for the job.
When a notification cannot be delivered, the notification is queued and retried for up to 12 hours.
When there are multiple notifications going to the same URL, these notifications are added to the queue and attempted once the first notification has been delivered or has expired.
The maintenance function removes deleted FIMS jobs and the associated job resource IDs. To learn more about maintenance, see Understanding Maintenance.
The Signiant FIMS SOAP API supports the following functions:
TransferMedia
MediaServiceStatus QueryJob
MediaServiceStatus ManageJob
The Signiant FIMS REST API supports the following endpoints:
/job
- Create a Transfer Job/job/{jobId}
- Retrieve a Transfer Job/job
- Retrieve All Transfer Jobs/job/jobId={jobid}&jobId={jobId}
- Retrieve a list of Specific Transfer Jobs/job
- Retrieve a Filtered List Transfer Jobs (See list Job Filter Criteria table below)/job/{jobId}/manage
- Manage Jobs (Control Jobs)/job/{jobId}/manage
- Get Minimal Job for current StatusJobs submitted with the FIMS API are controlled by the Signiant Resource controls when applied.
The following tables detail these services including the supported and not supported operations for each service.
The TransferMedia
Service or Create a Transfer Job functions are used to create FIMS jobs. This section describes the supported FIMS job attributes.
Job Status
The following table describes the values that can be represented by JobStatusType
on a FIMS job.
Supported Value | Value Description |
---|---|
new |
A new job is created. |
canceled |
The job has been canceled via the Manager interface or through the API. |
running |
The job is currently running. |
queued |
The job is currently queued by a Signiant [resource control]. |
completed |
The job is complete. |
failed |
The job has failed and is no longer running. |
Job Priority
Submitted jobs are queued (if configured) based on the priority in the TransferJob. If more than one job in the queue has the same priority, the finishBefore value can be used to prioritize the jobs (otherwise a FIFO order is maintained).
The priority of a job (the queue position) can be modified by using the MediaServiceStatus manageJob function, using the modify_priority
command.
The job priority (queue position) can be modified using the MediaServiceStatus ManageJob service and the Modify_Priority operation. When set to immediate priority level, the job is not started automatically - it sets the job as having the highest priority in the queue.
The following table describes the job priority level.
Job Priority Level | Description |
---|---|
Low | Job initially allocated to the end of the queue. |
Medium | Job initially allocated to be executed before any low priority jobs but after any existing medium priority jobs. |
High | Job initially allocated before any medium and low priority jobs but after existing high priority jobs. |
Urgent | Job initially allocated to be executed before any high, medium and low priority jobs but after existing urgent jobs. |
Immediate | Job should be executed as soon as the request is received. |
Elements Not Represented On The Transfer Job
The following elements are not represented on the transferJob.
Elements Not Supported | Element Description |
---|---|
estimatedCompletionDuration |
Not provided. |
tasks |
Not supported. |
queueReference |
While jobs can be queued in the system, a reference to the queue is not provided. |
currentQueuePosition |
Not provided. |
Scheduling Job Start
By default FIMS jobs are started as soon as they are received by the Manager.
To specify a job start time, use the startJob
prompt with the bms.StartJobByTimeType
function.
The bms.StartJobByTimeType
format is YYYY-MM-DDTHH:MM:ss+-HH:MM00
Note: +-HH:00
is the GMT offset for the job start time. For example, including 2020-04-20T12:00-04:00
creates a job for April 20, 2020 at noon GMT, adjusted to 8:00 AM local time.
To optionally specify that you want the job to start when submitted to the API, use the bms.StartJobByNoWaitType
xsi.type
in the startJob
object:
{
"transferJob": {
"bms.resourceID": "5",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://example.com/transfers/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.startJob": {
"@xsi.type": "bms.StartJobByNoWaitType"
},
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://example.com/c:/transfers/MediaIn"
}
]
}
]
}
}
}
To optionally specify when FIMS transfer jobs are started:
startJob
and sig.StartJobByTimeType
in the sig.fimsMapping
objectstartJob
and Schedule._sp_start_at
The bms.StartJobByTimeType
format is YYYY-MM-DDTHH:MM:ss+-HH:MM00
where +-HH:00 is the GMT offset (for example: 2020-09-30T12:00-04:00).
The following example shows the Media Mover transfer job using startJob
and sig.StartJobByTimeType
mapping:
{
"transferJob": {
"bms.resourceID": "5",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://example.com/X:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.startJob": {
"@xsi.type": "bms.StartJobByTimeType",
"bms.time": "2020-09-02T18:00:00Z"
},
"profiles": {
"transferProfile": [
{
"name": "Transfer Profile",
"description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://example.com/C:/storage/MediaIn"
}
],
"bms.location": "https://agent.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": [
{
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters": {
"sig.jobName": "JobName_1",
"sig.jobGroup": "MediaDistributor"
},
"sig.fimsMapping": [
{
"sig.sourceAgent": [
"MediaDistributor.Source.SourceAgent"
],
"sig.targetAgent": [
"MediaDistributor.Target.TargetAgents"
],
"sig.BMEssenceLocatorType": [
"MediaDistributor.Source.SourceData"
],
"sig.destination": [
"MediaDistributor.Target.TargetDirectory"
],
"sig.priority": ["MediaDistributor.Schedule.priority"],
"sig.StartJobByTimeType": [
"MediaDistributor.Schedule._sp_start_at"
]
}
],
"sig.jobVariables": {
"sig.JobVariableName": "MediaDistributor.Schedule._sp_interrupt_on_failure",
"sig.JobVariableValue": "no"
},
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date"
}
]
}
]
}
]
}
}
}
The following example shows the Media Mover transfer job using startJob and Schedule._sp_start_at:
{
"transferJob" : {
"bms.resourceID" : "5",
"bms.bmObjects" : {
"bms.bmObject" : [ {
"bms.bmContents" : {
"bms.bmContent" : [ {
"bms.bmContentFormats" : {
"bms.bmContentFormat" : [ {
"bms.bmEssenceLocators" : {
"bms.bmEssenceLocator" : [ {
"@xsi.type" : "bms.SimpleFileLocatorType",
"bms.file" : "file://testserver.com/F:/storage/MediaOut"
} ]
},
"bms.packageSize" : 44947460
} ]
}
} ]
}
} ]
},
"bms.priority" : "low",
"bms.startJob" : {
"@xsi.type" : "bms.StartJobByTimeType",
"bms.time" : "2020-09-29T18:00:00Z"
},
"profiles" : {
"transferProfile" : [ {
"name" : "Transfer Profile",
"description" : "Highspeed Transfer Delivery",
"transferAtom" : [ {
"bms.destination" : "file://targetagent.example.com/C:/storage/MediaIn"
} ],
"bms.location" : "https://sourceagent.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": [ {
"sig.SigniantExtensionGroup": [ {
"sig.jobContextParameters": {
"sig.jobName": "JobName_1",
"sig.jobGroup" : "MediaDistributor"
} ,
"sig.fimsMapping" : [ {
"sig.sourceAgent" : ["MediaDistributor.Source.SourceAgent"],
"sig.targetAgent" : ["MediaDistributor.Target.TargetAgents"],
"sig.BMEssenceLocatorType" : ["MediaDistributor.Source.SourceData"],
"sig.destination" : ["MediaDistributor.Target.TargetDirectory"],
"sig.priority" : ["MediaDistributor.Schedule.priority"],
} ] ,
"sig.jobVariables" :
{ "sig.JobVariableName" : "MediaDistributor.Schedule._sp_interrupt_on_failure", "sig.JobVariableValue" : "no"},
{ "sig.JobVariableName" : "MediaDistributor.Target.PathMappingOptions", "sig.JobVariableValue" : "job date"}
{ "sig.JobVariableName": "MediaDistributor.Schedule._sp_frequency" , "sig.JobVariableValue": "Once" },
{ "sig.JobVariableName": "MediaDistributor.Schedule._sp_start_at" , "sig.JobVariableValue": "2020/09/29 21:30:00" },
} ]
} ]
} ]
}
}
}
The MediasServiceStatus QueryJob
service or Retrieve a Transfer Job REST call allow you to query the jobs submitted with the FIMS API. Use QueryJobRequestByIdType
to query one or many resourceIDs.
Note: QueryJobRequestByFilterType
is not supported. JobInfoSelectionType
only supports ‘all’
The MediasServiceStatus ManageJob service/Manage Jobs (Control Jobs) allows you to control jobs submitted through the FIMS API. The first table details the supported commands for the service and the second table details the commands not supported with the MediaServiceStatus ManageJob service.
Supported Command | Command Description |
---|---|
pause |
Temporarily stop a job from running. |
cancel |
Stop a running job or removes the job from a job queue |
cleanup |
Delete a job on the Signiant Manager |
resume |
Resume a paused job |
restart |
Restart a job |
modify_priority |
Modify the priority of any queued job |
The stop
command is not supported.
The MediaServiceStatus ManageQueue
service is not supported. All jobs submitted may be controlled by Resource Controls.
This section uses code examples and REST examples to create, manage, list and retrieve jobs. The REST examples used in this guide are available in the Signiant Manager installer bundle in /support/fims_samples
.
The following sections and examples are based on the default FIMS configuration.
You must edit the JSON and make the following updates:
You must edit the REST header to modify your security credentials:
X_FIMS_USERNAME
X_FIMS_PASSWORD
The WSDL for the Transfer Service end point to submit jobs can be obtained from the following URL:
http://signiant_manager_name/signiant_fims_transfer_service/TransferMediaPort?wsdl
The WSDL for the Transfer Service end point to query and control jobs can be obtained from the following URL:
http://signiant_manager_name/signiant_fims_transfer_service/TransferMediaStatusPort?wsdl
The Signiant schema extension can be obtained from the following URL:
https://signiant_manager_name/signiant_fims_transfer_service/TransferMediaPort?wsdl&resource=signiantMediaService-V_1_1_0.xsd
Use the following URL:
http://signiant_manager_name/signiant_fims_transfer_service/transferservice/service_URI
The table below details the URLs for the TransferService services.
The following table lists the Job Filter Criteria:
URL | Description | HTTP Method | Request Body | Success Body | Failure Body |
---|---|---|---|---|---|
…/job | Create a Transfer Job | POST | tms: transferJob | tms: transferJob | tms: TransferFaultType |
…/job/{jobId} | Retrieve a Transfer Job | GET | - | tms: transferJob | tms: TransferFaultType |
…/job/ | Retrieve All Transfer Jobs | GET | - | bms: JobsType | tms: TransferFaultType |
…/job/jobId={jobid}&jobId={jobId}… | Retrieve a list of Specific Transfer Jobs | GET | - | bms: JobsType | tms: TransferFaultType |
…/job/ (See the Job Filter Criteria table below) | Retrieve a Filtered List of Transfer Jobs | GET | - | bms: QueryJobResponseType | tms: FaultMsg |
…/job/{jobId}/manage | Manage Jobs (Control Jobs) | POST | bms: ManageJobRequestType | tms: transferJob *1 | tms: FaultMsg |
…/job/{jobId}/manage | Get Minimal Job for current status | GET | - | tms: transferJob (minimum attributes) | tms: FaultMsg |
The HTTP Response Header for …/job is location:(urlForJob).
The {jobID} parameter described above is the unique identifier for a job.
Parameter | Description | Values |
---|---|---|
JobInfoSelectionType | Return only mandatory attributes or all attributes of a job | all or mandatory |
toDate | Jobs to be listed started on or before the date specified in this field | dateTime |
fromDate | Jobs to be listed shall have started on or after the date specified in this field | dateTime |
includeQueued | A flag to indicate job or jobs in the queue | true, false |
includeFinished | A flag to indicate job or jobs in the 'Completed’, 'Stopped’ or 'Cleaned’ state | true, false |
includeActive | A flag to indicate job or jobs in the 'Running’, 'Paused’ or 'Unknown’ state | true, false |
includeFailed | A flag to indicate job or jobs in the 'Failed’ state | true, false |
maxNumberResults | Maximum number of results to be listed | Positive Integer Value |
The following table describes the notifications that can be generated for the Transfer Service. The notifications and faults are generated by the service and sent to the orchestration system that invoked the service. The URL for notification or fault is contained in the replyTo and faultTo of the submitted job.
Description | HTTP Method | Body | Generation Events |
---|---|---|---|
Transfer Job events related to state change, creation, deletion and progress | POST | tms: transferJob |
Create Job, Job Progress, Manage Job |
Transfer Job Failures | POST | tms: TransferFaultNotificationType |
Create Job |
The following table describes the JSON samples used in the Curl examples. These samples are located in the Signiant Manager installation directory in /support/fims_samples.
File | Description |
---|---|
SigniantFIMSCreateJob.json |
Transfer utilizing FIMS default workflow. |
SigniantFIMSCreateJobWithExtension.json |
Transfer using custom workflow. Shows specification of: Custom job template library, Custom start component, Custom job group, Custom job name, Custom prompts. The sample sig.fimsMapping and sig.jobVariables match with a Job Template library of Media_Mover_Workflows and the MediaDistributor start component. |
SignianFIMSCancelJob.json |
Cancel an existing job. |
REST_Server.pl |
Receives and displays REST calls. |
In order to specify the location of source files and folders to transfer - use the URL format for files. The URL must specify the agent name and the location of the files and/or folders to be transferred. The files and agent must be co-located (SAN, Local disk, NAS, etc.). The URL format can be used to specify CIFs locations as well.
Use the bmEssenceLocatorType to specify the physical location of the files and/or folders to be transferred. The FIMS API supports all the three types of essence locators: SimpleFileLocatorType, ListFileLocatorType and FolderLocatorType.
To specify file and folder values:
The following is the format of the URL for the file location on the bmEssenceLocatorType:
file://agent name/file location
Where:
URL format file path examples:
bms.file
: file://agent.example.com/c:/transfers/MediaOut
bms.file
: file://agent.example.com///nas-storage.example.com/main/storage/MediaOut
bms.file
: file://agent.example.com//storage/MediaOut
The SimpleFileLocatorType
specifies the location of a single file to transfer.
Default Workflows
Signiant jobs are created from configured workflows in the system. These workflows are templates that contain variables and default values that are used when creating a job in the system. When a job is created from a workflow it is stored in a Job Group.
By default the FIMS API uses a preset workflow and Job Group for the submitted jobs. Signiant Extension Group attributes are not required when submitting jobs to the default workflow.
The default values in the workflow can be modified based on your requirements.
<timestamp>
To view the default FIMS JSON and to export this a template, use the Manager
Use the following Curl command to create a job:
curl -X POST -H "X-FIMS-Version: 1.1" -H "X-FIMS-UserName: <Username>" -H "X-FIMS-Password: <Password>" -H "Content-Type: application/json" --data @SigniantFIMSCreateJob.json http://manager.example.com/signiant_fims_transfer_service/transferservice/job
REST Create Job JSON Content (SigniantFIMSCreateJob.json)
{
"transferJob": {
"bms.resourceID": 1426773837,
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
Create Job Response
# => 200 OK | application/json 124 bytes
{`tms.transferJob`=>
{`bms.resourceID`=>`1426773837`,
`bms.status`=>`running`,
`bms.serviceProviderJobID`=>`FIMS_1426773847566`}}
The example below shows how to cancel a job. Use the following Curl command to manage (cancel) a job:
curl -X POST -H "X-FIMS-Version: 1.1" -H "X-FIMS-UserName: <Username>" -H "X-FIMS-Password: <Password>" -H "Content-Type: application/json" --data @SigniantFIMSCancelJob.json http://manager.example.com/signiant_fims_transfer_service/transferservice/job/<job_id>/manage
REST Create Job Response
{
"tms.transferJob": {
"bms.resourceID": "80",
"bms.status": "canceled",
"bms.serviceProviderJobID": "FIMS_1427392901082"
}
}
To delete or cleanup a job on the Signiant Manager, use the manage
request and the cleanup
job command.
Json Cleanup
{
"jobID": "1437658544440713",
"jobCommand": "cleanup"
}
Use the following Curl command to clean up a job:
curl -X POST -H "X-FIMS-Version: 1.1" -H "X-FIMS-UserName: <username>" -H "X-FIMS-Password:
<password>" -H "Content-Type: application/json" --data @SigniantFIMSCleanupJob.
json http://manager.example.com/signiant_fims_transfer_
service/transferservice/job/<jobid>/manage
REST Cleanup Job Response
{
"tms.transferJob": {
"bms.resourceID": "1437658544440713",
"bms.status": "cleaned",
"bms.serviceProviderJobID": "FIMS_1437658604953"
}
}
Use the following Curl command to retrieve a job:
curl -X GET -H "X-FIMS-Version: 1.1" -H "X-FIMS-UserName: <Username>" -H "X-FIMS-Password: <Password>" -H "Content-Type: application/json" http://manager.example.com/signiant_fims_transfer_service/transferservice/job/<jobid>
REST Job Details Response
{
"tms.transferJob": {
"bms.resourceID": "1427392239722417",
"bms.status": "completed",
"bms.serviceProviderJobID": "FIMS_1427392251829",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
},
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-03-26T13:50:53.000-04:00",
"bms.jobCompletedTime": "2020-03-26T13:50:57.000-04:00",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 100,
"bms.processedBytesCount": 2218710
},
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
To invoke a Perl-based web server that accepts and displays received FIMS notifications, use the following command. This code is included in the Signiant Manager bundle directory in /support/fims_samples
.
RESTServer.pl 8088
Note: Your job must include a notification section which provides details on where to send the notification. These details must include the IP address and port where the RESTServer.pl
is running.
To find prompt variable values:
The Signiant Extension Schema allows you to specify your own workflow values at runtime rather than using the configured default FIMS configuration. For example, you can invoke a custom workflow or use the Media Mover distribute workflow with your own variable values.
You do this by specifying the values you need in the transfer request payload.
Signiant Extension Schema Example
{
"transferJob": {
"bms.resourceID": 1426773850,
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"profiles": {
"transferProfile": [
{
"name": "Transfer Profile",
"description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent.example.com/C:/storage/MediaIn/"
}
],
"bms.location": "https://manager.example.com.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": [
{
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters":
{
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor"
}
,
"sig.fimsMapping": [
{
"sig.sourceAgent": [
"MediaDistributor.Source.SourceAgent"
],
"sig.targetAgent": [
"MediaDistributor.Target.TargetAgents"
],
"sig.BMEssenceLocatorType": [
"MediaDistributor.Source.SourceData"
],
"sig.destination": [
"MediaDistributor.Target.TargetDirectory"
],
"sig.priority": [
"MediaDistributor.Schedule.priority"
]
}
],
"sig.jobVariables":
{
"sig.JobVariableName": "MediaDistributor.Schedule._sp_interrupt_on_failure",
"sig.JobVariableValue": "no"
},
{
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date"
}
}
]
}
]
}
]
}
}
}
To assist the FIMS developer with the integration of the Signiant FIMS extension schema into the development environment, Signiant provides an XSD
version of its FIMS extension schema. The XSD can be downloaded from:
https://<manager>/signiant_fims_transfer_service/TransferMediaPort/wsdl/resource=signiantMediaService-V1_1_0.xsd
To use the Signiant Extension Schema, you must enter correct workflow variable names. To determine these variables in the Signiant Manager:
The Signiant Extension Schema provides type definitions that allow you to invoke any workflow by mapping standard FIMS attributes to workflow variables and to specify arbitrary parameters to jobs.
There are three categories of type definitions that you can use:
All or none of these types can be specified to provide information to submit a job. These types are then added to the SigniantExtensionGroup type, which in turn is added to the TransferProfile ExtensionGroup.
The FIMSAttributeMappingType specifies the Job Template variable that a FIMS standard element value must be mapped to. For example in the MediaDistributor Job Template below, the variable for the source agent is MediaDistributor.Source.SourceAgent. To specify the mapping use the element sourceAgent and set the value to MediaDistributor.Source.SourceAgent.
The following table details the FIMSAttributeMappingType elements:
Element | Value |
---|---|
sourceAgent | Extracts the host name from the BMEssenceLocator type URL and inserts the value into the specified workflow component value for the source agent. |
targetAgent | Extracts the host name from the TransferAtom destination type URL and inserts the value into the specified workflow component value for the target agent. |
BMEssenceLocatorType | Extracts the file name or folder portion of the BMEssenceLocator type URL and inserts the value into the specified workflow component value for the source data. |
destination | Extracts the file name or folder portion of the TransferAtom destination type URL and inserts the value into the specified workflow component value for the target location. |
priority | Extracts the TransferJobType priority value and inserts the value into the specified workflow component value for priority. |
finishBefore | Extracts the TransferJobType finishBefore value and inserts the value into the specified workflow component value for finishBefore. |
FIMSAttributeMapping Example
"sig.fimsMapping": [
{
"sig.sourceAgent": [
"MediaDistributor.Source.SourceAgent"
],
"sig.targetAgent": [
"MediaDistributor.Target.TargetAgents"
],
"sig.BMEssenceLocatorType": [
"MediaDistributor.Source.SourceData"
],
"sig.destination": [
"MediaDistributor.Target.TargetDirectory"
],
"sig.priority": [
"MediaDistributor.Schedule.priority"
]
}
]
All jobs are created using Job Templates within Job Template libraries. To specify a workflow to use (other than the default FIMS configuration), you must specify which Job Template Library to use within the submitted job. The desired Job Template Library name must be specified in the job’s TransferProfileType location value in the request payload. The format of the value should be a URL which includes the Job Template Library name and Job Template name.
The following example shows the URL format to specify a Job Template Library name and Job Template name:
https://signiant_manager_name/template/template_name/component/startcomponent_name
Where:
The following is an example for the TransferProfileType location that specifies the use of the Media Mover Media Distributor Job Template Library:
https://<signiant_manager_name/template>/Media_Mover_Workflow/component/MediaDistributor
The following is an example of how to specify a Job Template Library at runtime:
"bms.location": "https://<signiant_manager_name/template>/template/Media_Mover_Workflows/component/MediaDistributor"
The JobContextVariables are specified values to control the environment in which the job executes. Currently there are two values that can be specified:
jobName
: Specifies the Signiant Job Name. The name must be unique and can contain only alphanumeric characters and underscores. The jobName is limited to 32 characters.jobGroup
: The name of the job group, which must exist in the Signiant system and the user specified in the FIMS job submission must have access to the specified job group.The following shows an example of setting the jobName and jobGroup values:
"sig.jobContextParameters":
{
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor"
}
,
The JobVariable type allows any workflow component variable to be added to a submitted FIMS job. These variables should not include the subset from the FIMSAttributeMapping
type.
The following describes elements of the JobVariable
type:
JobVariableName
: workflow component variable name, for example: MediaDistributor.Source.SourceData
JobVariableValue
: the required value for the workflow component variable.The SigniantExtensionGroup Type allows you to add JobVariable, JobContextVariables, and/or FIMSAttributeMapping to a job. Any or all of the elements can be added to the SigniantExtensionGroup as required.
JobVariable Example
"sig.jobVariables":
{
"sig.JobVariableName": "MediaDistributor.Schedule._sp_interrupt_on_failure",
"sig.JobVariableValue": "no"
},
{
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date"
},
{
"sig.JobVariableName": " MediaDistributor.Transport.BandwidthThrottleByTimeOfDay",
"sig.JobVariableValue": "00:00;00:00;YYYYYYY;1875000;"
}
Once the SigniantExtensionGroup
is populated with the required values, the extension group is then added to the TransferProfileType ExtensionGroup as an any element.
The following table provides descriptions of the common error messages.
Error | Description | Explanation |
---|---|---|
INF_S00_003 |
N/A | Check the Jboss log (signiant.log) for errors. |
INF_S00_003 |
The username or password you entered is incorrect. | The header contained an invalid username or password. |
INF_S00_003 |
Insufficient permissions error | The user does not have access to the specified job group or job template library or the job group or job template library does not exist. |
DAT_S00_001 |
Missing ResourceID or invalid request format | This is typically a JSON formatting error or valid JSON sent to the wrong service. |
DAT_S00_001 |
The supplied jobID already exists | The jobId in the JSON was already used for a transfer on this Signiant Manager. |
DAT_S00_002 |
Missing priority | The mandatory priority field is not specified. |
DAT_S00_003 |
Agent is not valid | The source or target agent name is incorrect. |
The following is an example of an Error Response.
# => 422 ClientError | application/json 93 bytes
{
"fault": {
"bms.code": "DAT_S00_0001",
"bms.description": "The supplied jobID already exists"
}
}
The following list includes details which may help resolve some issues:
Specifying a namespace (for example, bms) for parameters is optional, but is a recommended practice. If you choose to specify only some namespaces you will see JSON parsing errors. You must either specify all of the namespaces or specify no namespaces.
Use the following format to specify a source or destination path:
bms.file: "file://agent.example.com//<folderName>/<filename>"
bms.destination: "file://agent.example.com//<folderName>"
bms.file: "file://agent.example.com///<FileServerHostname>/<UNCShare>/<folderName>/<filename>"
bms.destination: "file://agent.example.com///<FileServerHostname>/UNCShare>/<folderName>"
RestClient.post "http://manager.example.com/signiant_fims_transfer_service/transferservice/job", 574 byte(s) length, "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"574", "Content-Type"=>"application/json", "X-FIMS-Password"=>"password", "X-FIMS-UserName"=>"username"
{
"transferJob": {
"bms.resourceID": 1426773837,
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
# => 200 OK | application/json 124 bytes
{"tms.transferJob"=>
{"bms.resourceID"=>"1426773837",
"bms.status"=>"running",
"bms.serviceProviderJobID"=>"FIMS_1426773847566"}}
RestClient.post `http://manager.example.com/signiant_fims_transfer_service/transferservice/job`, 729 byte(s) length, `Accept`=>`*/*; q=0.5, application/xml`, `Accept-Encoding`=>`gzip, deflate`, `Content-Length`=>`729`, `Content-Type`=>`application/json`, `X-FIMS-Password`=>`password`, `X-FIMS-UserName`=>`username`
{
"transferJob": {
"bms.resourceID": 1426773887,
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
# => 200 OK | application/json 124 bytes
{"tms.transferJob"=>
{"bms.resourceID"=>"1426773887",
"bms.status"=>"running",
"bms.serviceProviderJobID"=>"FIMS_1426773897458"}}
{:method=>"POST"@0,
:URL=>{:path=>"/TransferMediaNotificationPort"@5},
:version=>"1.1"@41,
:headers=>
{"SOAPAction"=>"http://transfermedia.fims.tv/notifyTransferResult",
"Content-Length"=>"1044",
"Content-Type"=>"text/json",
"Host"=>"192.168.0.1:8088",
"Connection"=>"Keep-Alive",
"User-Agent"=>"Apache-HttpClient/4.1.1 (java 1.5)"}}
{
"transferJob": {
"bms.resourceID": "1426773887",
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.status": "running",
"bms.serviceProviderJobID": "FIMS_1426773897458",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-03-19T10:04:58.000-04:00",
"bms.jobElapsedTime": "PT4.507S",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 0,
"bms.processedBytesCount": 0
},
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
{
"transferFaultNotificationType": {
"transferJob": {
"bms.resourceID": "1437658544440713",
"bms.notifyAt": {
"bms.replyTo": "http://10.0.76.60:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://10.0.76.60:8089/TransferMediaNotificationFailedPort"
},
"bms.status": "failed",
"bms.serviceProviderJobID": "FIMS_1437658604953",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/J:/var"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-07-23T09:36:46.000-04:00",
"bms.jobElapsedTime": "PT2.703S",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 0,
"bms.processedBytesCount": 0
},
"profiles": {
"transferProfile": [
{
"@name": "Transfer Profile",
"@description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn"
}
]
}
]
}
},
"fault": {
"bms.code": "SVC_S00_0009",
"bms.description": "Non-zero exit code from the Source initialization command\r\nExecution of job component 'FIMS_Transfer' is suppressed.\r\nFinished job component: FIMS_Transfer_Start.GROUP_FIMS_Transfer.FIMS_Transfer - with errors.\r\n",
"bms.innerFault": [
{
"bms.code": "24"
}
]
}
}
}
{"tms.transferJob": {
"bms.resourceID": "11",
"bms.notifyAt": {
"bms.replyTo": "http://agent1.example.com:8080/FIMSResponse/response.jsp",
"bms.faultTo": "http://agent1.example.com:8080/FIMSResponse/response.jsp"
},
"bms.status": "completed",
"bms.serviceProviderJobID": "test",
"bms.operationName": "Transfer",
"bms.bmObjects": {"bms.bmObject": [{"bms.bmContents": {"bms.bmContent": [{"bms.bmContentFormats": {"bms.bmContentFormat": [ {
"bms.bmEssenceLocators": {"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/Source"
},
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/target"
}
]},
"bms.packageSize": 123456
}]}}]}}]},
"bms.priority": "low",
"bms.jobStartedTime": "2017-01-20T15:49:01.000+01:00",
"bms.jobCompletedTime": "2017-01-20T15:49:05.000+01:00",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 100,
"bms.processedBytesCount": 705730
},
"profiles": {"transferProfile": [ {
"bms.location": "https://agent1.example.com/template/FIMS_Workflow/component/FIMS_Transfer_Start",
"bms.ExtensionGroup": {"sig.SigniantExtensionGroup": [ {
"sig.jobContextParameters": {
"sig.jobName": "test1",
"sig.jobGroup": "Default"
},
"sig.jobVariables": {
"sig.JobVariableName": "FIMS_Transfer_Start.targetDirectory",
"sig.JobVariableValue": "c:/target/2"
}
}]},
"transferAtom": [{"bms.destination": "file://agent1.example.com/c:/target/1"}]
}]}
}}
RestClient.post `http://manager.example.com/signiant_fims_transfer_service/transferservice/job`, 1536 byte(s) length, `Accept`=>`*/*; q=0.5, application/xml`, `Accept-Encoding`=>`gzip, deflate`, `Content-Length`=>`1536`, `Content-Type`=>`application/json`, `X-FIMS-Password`=>`password`, `X-FIMS-UserName`=>`username`
{
"transferJob": {
"bms.resourceID": 1426773850,
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"profiles": {
"transferProfile": [
{
"name": "Transfer Profile",
"description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"bms.destination": "file://agent2.example.com.com/C:/storage/MediaIn/"
}
],
"bms.location": "https://manager.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": [
{
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters":
{
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor"
}
,
"sig.fimsMapping": [
{
"sig.sourceAgent": [
"MediaDistributor.Source.SourceAgent"
],
"sig.targetAgent": [
"MediaDistributor.Target.TargetAgents"
],
"sig.BMEssenceLocatorType": [
"MediaDistributor.Source.SourceData"
],
"sig.destination": [
"MediaDistributor.Target.TargetDirectory"
],
"sig.priority": [
"MediaDistributor.Schedule.priority"
]
}
],
"sig.jobVariables":
{
"sig.JobVariableName": "MediaDistributor.Schedule._sp_interrupt_on_failure",
"sig.JobVariableValue": "no"
},
{
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date"
}
}
]
}
]
}
]
}
}
}
# => 200 OK | application/json 126 bytes
{"tms.transferJob"=>
{"bms.resourceID"=>"1426773850",
"bms.status"=>"running",
"bms.serviceProviderJobID"=>"JobName_1_1426773850"}}
#######
{:method=>"POST"@0,
:URL=>{:path=>"/TransferMediaNotificationPort"@5},
:version=>"1.1"@41,
:headers=>
{"SOAPAction"=>"http://transfermedia.fims.tv/notifyTransferResult",
"Content-Length"=>"1941",
"Content-Type"=>"text/json",
"Host"=>"192.168.0.1:8088",
"Connection"=>"Keep-Alive",
"User-Agent"=>"Apache-HttpClient/4.1.1 (java 1.5)"}}
{
"transferJob": {
"bms.resourceID": "1426773850",
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.status": "running",
"bms.serviceProviderJobID": "JobName_1_1426773850",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-03-19T10:04:21.000-04:00",
"bms.jobElapsedTime": "PT4.522S",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 0,
"bms.processedBytesCount": 0
},
"profiles": {
"transferProfile": [
{
"bms.location": "https://manager.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": {
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters": {
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor",
},
"sig.fimsMapping": {
"sig.sourceAgent": "MediaDistributor.Source.SourceAgent",
"sig.targetAgent": "MediaDistributor.Target.TargetAgents",
"sig.BMEssenceLocatorType": "MediaDistributor.Source.SourceData",
"sig.destination": "MediaDistributor.Target.TargetDirectory",
"sig.priority": "MediaDistributor.Schedule.priority",
},
"sig.jobVariables": {
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date",
},
}
]
},
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
{:method=>"POST"@0,
:URL=>{:path=>"/TransferMediaNotificationPort"@5},
:version=>"1.1"@41,
:headers=>
{"SOAPAction"=>"http://transfermedia.fims.tv/notifyTransferResult",
"Content-Length"=>"1949",
"Content-Type"=>"text/json",
"Host"=>"192.168.0.1:8088",
"Connection"=>"Keep-Alive",
"User-Agent"=>"Apache-HttpClient/4.1.1 (java 1.5)"}}
{
"transferJob": {
"bms.resourceID": "1426773850",
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.status": "running",
"bms.serviceProviderJobID": "JobName_1_1426773850",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-03-19T10:04:21.000-04:00",
"bms.jobElapsedTime": "PT11.814S",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 89,
"bms.processedBytesCount": 2218710
},
"profiles": {
"transferProfile": [
{
"bms.location": "https://manager.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": {
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters": {
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor",
},
"sig.fimsMapping": {
"sig.sourceAgent": "MediaDistributor.Source.SourceAgent",
"sig.targetAgent": "MediaDistributor.Target.TargetAgents",
"sig.BMEssenceLocatorType": "MediaDistributor.Source.SourceData",
"sig.destination": "MediaDistributor.Target.TargetDirectory",
"sig.priority": "MediaDistributor.Schedule.priority",
},
"sig.jobVariables": {
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date",
},
}
]
},
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
{:method=>"POST"@0,
:URL=>{:path=>"/TransferMediaNotificationPort"@5},
:version=>"1.1"@41,
:headers=>
{"SOAPAction"=>"http://transfermedia.fims.tv/notifyTransferResult",
"Content-Length"=>"1949",
"Content-Type"=>"text/json",
"Host"=>"192.168.0.1:8088",
"Connection"=>"Keep-Alive",
"User-Agent"=>"Apache-HttpClient/4.1.1 (java 1.5)"}}
{
"transferJob": {
"bms.resourceID": "1426773850",
"bms.notifyAt": {
"bms.replyTo": "http://192.168.0.1:8088/TransferMediaNotificationPort",
"bms.faultTo": "http://192.168.0.1:8089/TransferMediaNotificationPort"
},
"bms.status": "running",
"bms.serviceProviderJobID": "JobName_1_1426773850",
"bms.operationName": "Transfer",
"bms.bmObjects": {
"bms.bmObject": [
{
"bms.bmContents": {
"bms.bmContent": [
{
"bms.bmContentFormats": {
"bms.bmContentFormat": [
{
"bms.bmEssenceLocators": {
"bms.bmEssenceLocator": [
{
"@xsi.type": "bms.SimpleFileLocatorType",
"bms.file": "file://agent1.example.com/C:/storage/MediaOut"
}
]
},
"bms.packageSize": 44947460
}
]
}
}
]
}
}
]
},
"bms.priority": "low",
"bms.jobStartedTime": "2020-03-19T10:04:21.000-04:00",
"bms.jobElapsedTime": "PT11.814S",
"bms.processed": {
"@xsi.type": "bms.ProcessedInfoByBytesType",
"bms.percentageProcessedCompleted": 89,
"bms.processedBytesCount": 2218710
},
"profiles": {
"transferProfile": [
{
"bms.location": "https://manager.example.com/template/Media_Mover_Workflows/component/MediaDistributor",
"bms.ExtensionGroup": {
"sig.SigniantExtensionGroup": [
{
"sig.jobContextParameters": {
"sig.jobName": "JobName_1_1426773850",
"sig.jobGroup": "MediaDistributor",
},
"sig.fimsMapping": {
"sig.sourceAgent": "MediaDistributor.Source.SourceAgent",
"sig.targetAgent": "MediaDistributor.Target.TargetAgents",
"sig.BMEssenceLocatorType": "MediaDistributor.Source.SourceData",
"sig.destination": "MediaDistributor.Target.TargetDirectory",
"sig.priority": "MediaDistributor.Schedule.priority",
},
"sig.jobVariables": {
"sig.JobVariableName": "MediaDistributor.Target.PathMappingOptions",
"sig.JobVariableValue": "job date",
},
}
]
},
"transferAtom": [
{
"bms.destination": "file://agent2.example.com/C:/storage/MediaIn/"
}
]
}
]
}
}
}
"bms.status": "failed","bms.statusDescription": "Non-zero exit code from the Source initialization command\r\nExecution of job component 'FIMS_Transfer' is suppressed.\r\nFinished job component: FIMS_Transfer_Start.GROUP_FIMS_Transfer.FIMS_Transfer - with errors.\r\n",
#!/usr/signiant/dds/bin/perl/bin/perl
use strict;
use Socket;
use IO::Socket;
# Simple web server in Perl
# Serves out .html files, echos form data
sub parse_form {
my $data = $_[0];
my %data;
foreach (split /&/, $data) {
my ($key, $val) = split /=/;
$val =~ s/\+/ /g;
$val =~ s/%(..)/chr(hex($1))/eg;
$data{$key} = $val;}
return %data; }
# Setup and create socket
my $port = shift;
defined($port) or die "Usage: $0 portno\n";
my $DOCUMENT_ROOT = $ENV{'HOME'} . "/public_html";
my $server = new IO::Socket::INET(Proto => 'tcp',
LocalPort => $port,
Listen => SOMAXCONN,
Reuse => 1);
$server or die "Unable to create server socket: $!" ;
# Await requests and handle them as they arrive
while (my $client = $server->accept()) {
$client->autoflush(1);
my %request = ();
my %data;
{
#-------- Read Request ---------------
local $/ = Socket::CRLF;
while (<$client>) {
chomp; # Main http request
if (/\s*(\w+)\s*([^\s]+)\s*HTTP\/(\d.\d)/) {
$request{METHOD} = uc $1;
$request{URL} = $2;
$request{HTTP_VERSION} = $3;
} # Standard headers
elsif (/:/) {
(my $type, my $val) = split /:/, $_, 2;
$type =~ s/^\s+//;
foreach ($type, $val) {
s/^\s+//;
s/\s+$//;
}
$request{lc $type} = $val;
} # POST data
elsif (/^$/) {
read($client, $request{CONTENT}, $request{'content-length'})
if defined $request{'content-length'};
last;
}
}
}
#-------- SORT OUT METHOD ---------------
if ($request{METHOD} eq 'GET') {
if ($request{URL} =~ /(.*)\?(.*)/) {
$request{URL} = $1;
$request{CONTENT} = $2;
%data = parse_form($request{CONTENT});
} else {
%data = ();
}
$data{"_method"} = "GET";
} elsif ($request{METHOD} eq 'POST') {
%data = parse_form($request{CONTENT});
$data{"_method"} = "POST";
} else {
$data{"_method"} = "ERROR";
}
#------- Serve file ----------------------
my $localfile = $DOCUMENT_ROOT.$request{URL};
# Send Response
if (open(FILE, "<$localfile")) {
print $client "HTTP/1.0 200 OK", Socket::CRLF;
print $client "Content-type: text/html", Socket::CRLF;
print $client Socket::CRLF;
my $buffer;
while (read(FILE, $buffer, 4096)) {
print $client $buffer;
}
$data{"_status"} = "200";
}
else {
print $client "HTTP/1.0 404 Not Found", Socket::CRLF;
print $client Socket::CRLF;
print $client "<html><body>404 Not Found</body></html>";
$data{"_status"} = "404";
}
close(FILE);
# Log Request
print ($DOCUMENT_ROOT.$request{URL},"\n");
foreach (keys(%data)) {
print (" $_ = $data{$_}\n"); }
# ----------- Close Connection and loop ------------------
close $client;
}
For information about the Signiant Flight CLI Utility, read the Signiant Flight Documentation.
The following sections provide the prompt names, descriptions, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Flight Uploads.
The following are the Source prompts for the Flight Uploads workflow:
Source Agent
Source Data
<siglist type=`filedir`>
<el v=`c:\Temp` t=`d`></el>
<el v=`e:\dist\source\test.txt` t=`f`></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Delete Source Files After Upload
Delete Empty Source Folders After Upload
The following list details the Source Content Filters prompts for the Flight Uploads workflow:
Include File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude Subdirectories
Subdirectories to Exclude
For example, if you specify a source folder of C:\data\docs, and an exclude folder of temp, any subfolders called temp are excluded, including those nested within another subfolder. (For example the subfolder C:\data\docs\publish\release\temp is excluded as well.)
If you who want to exclude a folder only at a certain level, use the @ symbol to anchor the exclude folder path at the starting source folder level. For example, specifying @temp in the above example means that the C:\data\docs\temp folder is excluded, but the C:\data\docs\publish\release\temp folder is included.
To exclude C:\data\docs\publish\release\ but have a source folder path of C:\data\docs, the user needs to type C:\data\docs in the Base Folder prompt and @publish\release\temp in the Subdirectories to Exclude prompt. Special characters allow you to make use of pattern matching on the folder path. To match special characters literally, you must escape special characters. Characters include the following:
*
(matches zero or more characters)
?
(matches any single character)
[...]
(matches any one of the enclosed characters - for example, [ch] would match the characters c
or h
)
A pair of digit, lowercase or uppercase characters separated by a hyphen ’-’ denotes a range set and matches any character sorted in the range. If the first character following the ’[’ is ’^’ or ’!’, then any character not enclosed is matched. Use commas to specify multiple distinct patterns.
File Date Filter
(value)
where:
- filterType can have these values: ['none’,'none’], ['modified’,'when file was last modified’], ['accessed’,'when file was last accessed’], ['created’,'when file was created’]
(comparison) can have these values: ['gt’,'before’ or 'more than’], ['lt’,'after’ or 'within’], ['ge’,'before or on’], ['le’,'after or on’]
(value) can have these values: Date in the form of YYYY/MM/DD
or Number, followed by these letters: [’s’,'seconds’], [’m’,'minutes’], ['h’,'hours’], [’d’,'days’], ['w’,'weeks’], [’M’,'months’], ['y’,'years’]File Readiness Check Type
For Windows agents and local Windows file systems, there is no need to use a file readiness check, because the core file in use is sufficient.
For Windows agent and NAS Windows file systems, as long as the NAS file system properly supports file locking for in-use files, the readiness check is unnecessary. However, it is still available in the event the NAS file system does not properly support file locking.
For non-Windows agents of any kind (Linux, UNIX, MacOS). If the local or network file system supports file locking, the readiness check is not required. Determine this on a case-by-case basis.
Readiness Check Delay
MD5 Hash
, Consecutive Seek
, or Date/Time & Size
) for an open file. The file is transferred only if the results of the two checks are identical. If a large number of files are being checked, a value of 0 seconds may be sufficient, since there will likely be sufficient time between the first and second checks of a given file to determine if its content has changed without inserting an additional delay. The default value is 10 seconds.The following list details the Target Storage prompts for the Flight Uploads workflow:
Cloud Vendor
Storage Specification Mechanism
Flight Storage Config ID
Folder Structure Preservation
Optional Target Subfolder
The following list details the Flight Service prompts for the Flight Uploads workflow:
Flight Service Primary Entry Point
Flight Service Backup Entry Point
Flight API Key
The following list details the Amazon S3 Credentials prompts for the Flight Uploads workflow:
AWS Access Key
AWS Secret Key
S3 Bucket
The following list details the Microsoft Azure Credentials prompts for the Flight Uploads workflow:
Azure Storage Account Name
Azure Access Key
Azure Container
The following list details the Encryption Options prompts for the Flight Uploads workflow:
Encrypt Uploaded Files
Encryption Key
Initialization Vector
The following list details the Transport Options prompts for the Flight Uploads workflow:
Protocol
Bandwidth Throttle
Transport Restart Attempts
Transport Port Usage
Relay Agents
HTTP Proxy
http://<host>:<port>
http://<host>:<port>
The following list details the Notification and Logging prompts for the Flight Uploads workflow:
Success Email Condition
Email To
Email Cc
Email Bcc
Email Failure Report To
Log Detail Level
Create File Delivery Log
The following list provides Job Schedule prompt details for the Flight Uploads workflow:
Frequency
The options are: None: use for jobs that run only at irregular, user defined times. Hourly, Daily, Weekly, Monthly, Yearly: run the job once every selected interval. Monthend: run the job once every last day of the month. Once: run the job only once, when first created.
None, Any number, representing Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).
Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following is an example of the Flight Upload JSON.
{
"transferJob": {
"resourceID": "123456",
"notifyAt": {
"replyTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp",
"faultTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp"
},
"bmObjects": {
"bmObject": [
{
"bmContents": {
"bmContent": [
{
"bmContentFormats": {
"bmContentFormat": [
{
"packageSize": 123456,
"bmEssenceLocators": {
"bmEssenceLocator": [
{
"file": "file://agent1.example.com/C:/storage/source/",
"type": "SimpleFileLocatorType"
}
]
}
}
]
}
}
]
}
}
]
},
"profiles": [
{
"transferProfile": [
{
"name": "Transfer Profile",
"transferAtom": [
{ "destination": "file://agent2.example.com/D:/storage/target" }
],
"description": "Highspeed Transfer Delivery",
"location": [
"https://manager.example.com/template/Flight_Reference_Workflows/component/Flight_Upload"
],
"ExtensionGroup": [
{
"SigniantExtensionGroup": [
{
"jobContextParameters": [
{
"jobName": ["FIMS_Flight_Upload_123456"],
"jobGroup": ["Default"]
}
],
"jobVariables": [
{
"JobVariableName": [
"Flight_Upload.sourceOptions.sourceAgent"
],
"JobVariableValue": ["agent1.example.com"]
},
{
"JobVariableName": [
"Flight_Upload.sourceOptions.sourceData"
],
"JobVariableValue": [
"<siglist type=\"filedir\"> <el v=\"C:/storage/source\" t=\"d\"></el> <el v=\"e:/dist/source/test.txt\" t=\"f\"></el> </siglist>"
]
},
{
"JobVariableName": [
"Flight_Upload.sourceOptions.deleteSourceFilesAfterUpload"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"Flight_Upload.sourceOptions.deleteEmptySourceFoldersAfterUpload"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.includeFilePatterns"
],
"JobVariableValue": ["*"]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.excludeFilePatterns"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.excludeSubdirectories"
],
"JobVariableValue": ["Specified"]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.subdirectoriestoExclude"
],
"JobVariableValue": ["dir1, dir2"]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.fileDateFilter"
],
"JobVariableValue": ["-modified lt \"2d\""]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.fileReadinessCheckType"
],
"JobVariableValue": ["None"]
},
{
"JobVariableName": [
"Flight_Upload.sourceSelectionOptions.readinessCheckDelay"
],
"JobVariableValue": ["10"]
},
{
"JobVariableName": [
"Flight_Upload.targetOptions.cloudVendor"
],
"JobVariableValue": ["s3"]
},
{
"JobVariableName": [
"Flight_Upload.targetOptions.storageSpecificationMechanism"
],
"JobVariableValue": ["configid"]
},
{
"JobVariableName": [
"Flight_Upload.targetOptions.flightStorageConfigID"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.targetOptions.folderStructurePreservation"
],
"JobVariableValue": ["preserveall"]
},
{
"JobVariableName": [
"Flight_Upload.targetOptions.optionalTargetSubfolder"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.flightServiceOptions.flightServicePrimaryEntryPoint"
],
"JobVariableValue": ["us-east-1-am.cloud.signiant.com"]
},
{
"JobVariableName": [
"Flight_Upload.flightServiceOptions.flightServiceBackupEntryPoint"
],
"JobVariableValue": ["none"]
},
{
"JobVariableName": [
"Flight_Upload.flightServiceOptions.flightAPIKey"
],
"JobVariableValue": ["asdf234edgg43reafd"]
},
{
"JobVariableName": [
"Flight_Upload.amazonS3.aWSAccessKey"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.amazonS3.aWSSecretKey"
],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Upload.amazonS3.s3Bucket"],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.microsoftAzure.azureStorageAccountName"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.microsoftAzure.azureAccessKey"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.microsoftAzure.azureContainer"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.encryption.encryptUploadedFiles"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"Flight_Upload.encryption.encryptionKey"
],
"JobVariableValue": [""]
},
{
"JobVariableName": [
"Flight_Upload.encryption.initializationVector"
],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Upload.transport.protocol"],
"JobVariableValue": ["all"]
},
{
"JobVariableName": [
"Flight_Upload.transport.bandwidthThrottle"
],
"JobVariableValue": ["500000"]
},
{
"JobVariableName": [
"Flight_Upload.transport.transportRestartAttempts"
],
"JobVariableValue": ["3"]
},
{
"JobVariableName": [
"Flight_Upload.transport.transportPortUsage"
],
"JobVariableValue": ["range"]
},
{
"JobVariableName": [
"Flight_Upload.transport.relayAgents"
],
"JobVariableValue": [
"agent2.example.com agent1.example.com"
]
},
{
"JobVariableName": [
"Flight_Upload.transport.hTTPProxy"
],
"JobVariableValue": ["proxy"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.successEmailCondition"
],
"JobVariableValue": ["Never"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.emailTo"
],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.emailCc"
],
"JobVariableValue": ["user2@example.com"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.emailBcc"
],
"JobVariableValue": ["user3@example.com"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.emailFailureReportTo"
],
"JobVariableValue": ["user4@example.com"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions._sp_log_severity"
],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"Flight_Upload.notificationandLoggingOptions.createFileDeliveryLog"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"Flight_Upload.Schedule._sp_frequency"
],
"JobVariableValue": ["None"]
},
{
"JobVariableName": [
"Flight_Upload.Schedule._sp_start_at"
],
"JobVariableValue": ["%now%"]
},
{
"JobVariableName": ["Flight_Upload.Schedule.timezone"],
"JobVariableValue": ["America/New_York"]
},
{
"JobVariableName": [
"Flight_Upload.Schedule._sp_interrupt_on_failure"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": ["Flight_Upload.Schedule.priority"],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"Flight_Upload.Schedule.finishBefore"
],
"JobVariableValue": ["2020/08/29 12:55:00"]
}
]
}
]
}
]
}
]
}
],
"priority": "low"
}
}
The following lists provide the prompt names, prompt details, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Flight Downloads workflow.
The following list provides Source prompt details for the Flight Downloads workflow:
Cloud Vendor
Storage Specification Mechanism
Flight Storage Config ID
Source Data
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
File List
Description: List of files and/or folders to be transferred. This is a list of absolute paths (or paths relative to the Base Folder) and may be in SigListXML format or comma separated. A combination of absolute and relative paths is not supported. If this list contains a path to a single file, and that path ends with ._manifest_, then it is considered to be a manifest file and is read by the component to determine the actual list of files/folders to be transferred. A UNC path to the manifest file is supported on Windows. The manifest path must be an absolute path. This is a mandatory prompt.
REST/SOAP Variable Value:
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory)
The following list provides Target prompt details for the Flight Downloads workflow:
Target Agents
Target Folder
The following list details the Flight Service prompts for the Flight Downloads workflow:
Flight Service Primary Entry Point
Flight Service Backup Entry Point
Flight API Key
The following list details the Amazon S3 Credentials prompts for the Flight Downloads workflow:
AWS Access Key
AWS Secret Key
S3 Bucket
The following list details the Microsoft Azure Credentials prompts for the Flight Downloads workflow:
Azure Storage Account Name
Azure Access Key
Azure Container
The following list details the Decryption Options prompts for the Flight Downloads workflow:
Decrypt Download Files
Decryption Key
Initialization Vector
The following list provides Transport Options prompt details for the Flight Downloads workflow:
Protocol
Bandwidth Throttle
Transport Restart Attempts
Transport Port Usage
Relay Agents
HTTP Proxy
http://<host>:<port>
http://<host>:<port>
The following list details the Notification and Logging prompts for the Flight Uploads workflow:
Success Email Condition
Email To
Email Cc
Email Bcc
Email Failure Report To
Log Detail Level
Create File Delivery Log
The following list provides Schedule prompt details for the Flight Downloads workflow:
Frequency
Every X minutes
.4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Every X Y of the month
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following is an example of the Flight Downloads JSON.
{"transferJob": {
"resourceID": "123456",
"notifyAt": {
"replyTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp",
"faultTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp"
},
"bmObjects": {"bmObject": [{"bmContents": {"bmContent": [{"bmContentFormats": {"bmContentFormat": [ {
"packageSize": 123456,
"bmEssenceLocators": {"bmEssenceLocator": [ {
"file": "file://agent1.example.com/C:/Flight/baseFolder/",
"type": "SimpleFileLocatorType"
}]}
}]}}]}}]},
"profiles": [{"transferProfile": [ {
"name": "Transfer Profile",
"transferAtom": [{"destination": "file://agent2.example.com/C:/storage/targetAcquired"}],
"description": "Highspeed Transfer Delivery",
"location": ["https://manager.example.com/template/Flight_Reference_Workflows/component/Flight_Download"],
"ExtensionGroup": [{"SigniantExtensionGroup": [ {
"jobContextParameters": [ {
"jobName": ["FIMS_Flight_Download_123456"],
"jobGroup": [""]
}],
"jobVariables": [
{
"JobVariableName": ["Flight_Download.sourceOptions.cloudVendor"],
"JobVariableValue": ["s3"]
},
{
"JobVariableName": ["Flight_Download.sourceOptions.storageSpecificationMechanism"],
"JobVariableValue": ["configid"]
},
{
"JobVariableName": ["Flight_Download.sourceOptions.flightStorageConfigID"],
"JobVariableValue": ["asdf234edgg43reafd"]
},
{
"JobVariableName": ["Flight_Download.sourceOptions.sourceData"],
"JobVariableValue": ["c:\\Flight\\baseFolder"]
},
{
"JobVariableName": ["Flight_Download.targetOptions.targetAgent"],
"JobVariableValue": ["agent2.example.com"]
},
{
"JobVariableName": ["Flight_Download.targetOptions.targetFolder"],
"JobVariableValue": ["c:\\tmp\\targetAquired"]
},
{
"JobVariableName": ["Flight_Download.flightServiceOptions.flightServicePrimaryEntryPoint"],
"JobVariableValue": ["us-east-1-am.cloud.signiant.com"]
},
{
"JobVariableName": ["Flight_Download.flightServiceOptions.flightServiceBackupEntryPoint"],
"JobVariableValue": ["none"]
},
{
"JobVariableName": ["Flight_Download.flightServiceOptions.flightAPIKey"],
"JobVariableValue": ["asdf234edgg43reafd"]
},
{
"JobVariableName": ["Flight_Download.amazonS3.aWSAccessKey"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.amazonS3.aWSSecretKey"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.amazonS3.s3Bucket"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.microsoftAzure.azureStorageAccountName"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.microsoftAzure.azureAccessKey"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.microsoftAzure.azureContainer"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.decryption.decryptDownloadedFiles"],
"JobVariableValue": ["no"]
},
{
"JobVariableName": ["Flight_Download.decryption.decryptionKey"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.decryption.initializationVector"],
"JobVariableValue": [""]
},
{
"JobVariableName": ["Flight_Download.transport.protocol"],
"JobVariableValue": ["all"]
},
{
"JobVariableName": ["Flight_Download.transport.bandwidthThrottle"],
"JobVariableValue": ["500000"]
},
{
"JobVariableName": ["Flight_Download.transport.transportRestartAttempts"],
"JobVariableValue": ["3"]
},
{
"JobVariableName": ["Flight_Download.transport.transportPortUsage"],
"JobVariableValue": ["range"]
},
{
"JobVariableName": ["Flight_Download.transport.relayAgents"],
"JobVariableValue": ["agent2.example.com agent1.example.com"]
},
{
"JobVariableName": ["Flight_Download.transport.httpProxy"],
"JobVariableValue": ["proxy"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.successEmailCondition"],
"JobVariableValue": ["Never"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.emailTo"],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.emailCc"],
"JobVariableValue": ["user2@example.com"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.emailBcc"],
"JobVariableValue": ["user3@example.com"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.emailFailureReportTo"],
"JobVariableValue": ["user4@example.com"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions._sp_log_severity"],
"JobVariableValue": ["2"]
},
{
"JobVariableName": ["Flight_Download.notificationandLoggingOptions.createFileDeliveryLog"],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": ["Flight_Download.Schedule._sp_frequency"],
"JobVariableValue": ["None"]
},
{
"JobVariableName": ["Flight_Download.Schedule._sp_start_at"],
"JobVariableValue": ["%now%"]
},
{
"JobVariableName": ["Flight_Download.Schedule.timezone"],
"JobVariableValue": ["America/New_York"]
},
{
"JobVariableName": ["Flight_Download.Schedule._sp_interrupt_on_failure"],
"JobVariableValue": ["no"]
},
{
"JobVariableName": ["Flight_Download.Schedule.priority"],
"JobVariableValue": ["2"]
},
{
"JobVariableName": ["Flight_Download.Schedule.finishBefore"],
"JobVariableValue": [""2020/08/29 12:55:00""]
}
]
}]}]
}]}],
"priority": "low"
}}
For more information about Media Mover read the Media Mover documentation.
The following sections provide the prompt names, description, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Media Mover (MediaDropBox).
The following are the Drop Box Specification prompts for the MediaDropBox:
Drop Box Agent
Drop Box Directory
Description: The source folder used for the files to be transferred. Type the folder name in the prompt, or click the computer icon to browse and select an agent folder. The source folder specified may be in the following format:
Leaving the Source Data prompt empty will use the agent’s default folder.
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Include File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude Subdirectories
Subdirectories to Exclude
For example, if you specify a source folder of C:\data\docs, and an exclude folder of temp, any subfolders called temp are excluded, including those nested within another subfolder. (For example the subfolder C:\data\docs\publish\release\temp is excluded as well.)
If you who want to exclude a folder only at a certain level, use the @ symbol to anchor the exclude folder path at the starting source folder level. For example, specifying @temp in the above example means that the C:\data\docs\temp folder is excluded, but the C:\data\docs\publish\release\temp folder is included.
To exclude C:\data\docs\publish\release\ but have a source folder path of C:\data\docs, the user needs to type C:\data\docs in the Base Folder prompt and @publish\release\temp in the Subdirectories to Exclude prompt. Special characters allow you to make use of pattern matching on the folder path. To match special characters literally, you must escape special characters. Characters include the following:
*
(matches zero or more characters)
?
(matches any single character)
[...]
(matches any one of the enclosed characters - for example, [ch] would match the characters c
or h
)
A pair of digit, lowercase or uppercase characters separated by a hyphen ’-’ denotes a range set and matches any character sorted in the range. If the first character following the ’[’ is ’^’ or ’!’, then any character not enclosed is matched. Use commas to specify multiple distinct patterns.
File Readiness Check Type
For Windows agents and local Windows file systems, there is no need to use the file readiness check, because the core file in use behavior is sufficient.
For Windows agent and NAS Windows file system, as long as the NAS file system properly supports file locking for in-use files, the readiness check is unnecessary. However, it is still available in the event the NAS file system does not properly support file locking.
For non-Windows agents of any kind (Linux, UNIX, MacOS). If the local or network file system supports file locking, the readiness check is not required. Determine this on a case-by-case basis.
Date/Time & Size: use a difference in date/time or size on the file to compare its readiness. Only files that have identical date/time and size are transferred.
Readiness Check Delay
MD5 Hash
, Consecutive Seek
, or Date/Time & Size
) for an open file. The file is transferred only if the results of the two checks are identical. If a large number of files are being checked, a value of 0 seconds may be sufficient, since there will likely be sufficient time between the first and second checks of a given file to determine if its content has changed without inserting an additional delay. The default value is 10 seconds.Source Deletions After Successful Transfer
Description: Specifies removal of files or folders from the Drop Box Folder after a successful transfer. The options are:
There are certain requirements with the empty folders options: the folders must contain no files (they may contain other empty folders that will be removed as well). The folder cannot have been modified within the previous 5 minutes; if it has, it will not be removed.
Source Directories to Exclude from Deletion Scan
Skip Source File Not Found On Send
The following list details the Destination Specification prompts:
Target Agents
TargetDirectory
Directory Mapping Options
Maximum Job Date-Time Directories
Unlimited
, which instructs the job to never prune the job date/time directories.Remove Expired Files on Target
Remove Expired Directories on Target
Expiration Period
The following list provides Transport Options prompt details:
Use UDP Control Channel
This setting applies to all Manager/agent job control communication across the entire job. UDP versus TCP communication for agent administration via the Signiant Manager is controlled separately as part of agent configuration.
When set to Yes, all file transfers are also forced to utilize UDP WAN acceleration (this overrides the Use WAN Accelerator setting). It is not possible to have job control using TCP and data transfer using UDP.
This functionality is intended to be used for firewall traversal when the TCP port cannot be opened. If this is not a requirement, we recommend that this prompt is set to No.
Use WAN Accelerator
When running a job with Use WAN Accelerator set to Yes, with a low bandwidth ceiling, or flow, or low throughput, the transfer will be switched to TCP. (The cutoff value is 57200 bits/second.)
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
WAN Accelerator Aggressiveness
High: The agent always attempts to send data at the Bandwidth Ceiling rate and not share with other network traffic. Medium: The agent always attempts to send data at the Bandwidth Ceiling rate, however, if other traffic is detected, the agent shares the network resources but never falls below the Bandwidth Floor. Low: The agent always attempts to send data at the Bandwidth Ceiling rate, however, if other traffic is detected, the agent drops its transfer rate to the bandwidth floor right away, and slowly attempts to creep back up to the target throughput rate.
Bandwidth Ceiling
0
specifies auto-detection for the best bandwidth rate. Testing has shown that specifying a ceiling is faster, because when the ceiling is set, the transfer immediately starts at that rate, rather than ramping up.Bandwidth Floor
0
specifies auto-detection for the best bandwidth rate.Bandwidth Throttle by Time of Day (in GMT time)
For example, users could specify that the job uses 50% of a 56 Kbps link between 9:00 and 5:00 Monday through Friday, 75% between 5:00 pm and 6:00 am, and 100% on the weekend. Click the plus icon +
to add more bandwidth throttles, or the x
to delete a throttle.
Note that once a job has started, all bandwidth throttles are applied at the times based on the Daylight Savings Time (DST) in effect when the job started. If DST changes while the job is running, bandwidth time of day changes may be off by the time change value (plus or minus an hour) after the time change.
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
You can also specify multiple controls by adding the same value after the first one, for example: 12:00;13:00;YYNNNYY;12500;13:00;14:00;YYNYNNY;1398900;.
The following list provides Advanced Options prompt details:
Encryption Level
Allows specification of the encryption level from the following values:
_ No Encryption- signed: This transfers unencrypted (plain text) data, but includes the SSL protocol’s message digest calculation and signing to ensure data stream integrity.
_ No Encryption - unsigned: This allows the transfer of data, after the initial SSL authentication of the endpoints, to proceed with no encryption, no message digest computation and no signing of the message digests (normally included with the SSL protocol. This mode of operation is only for raw performance, since it makes no guarantee of the integrity of the data stream other than the default one has with a normal network channel. The underlying TCP protocol can guarantee the integrity of messages across each single network hop, but has no facilities for detecting a man-in-the-middle attack.
The Encryption On option uses the following maximum or high encryption level: Cipher=AES256-SHA, Keysize=256/256.
The default value is No Encryption - unsigned. Note that mutual authentication is always used, regardless of the encryption level specified. Encryption is done in-stream
and not on disk prior to sending.
Delivery Mode
Description: Specifies the file transfer mode. The options are:
REST/SOAP Variable Value: fast, nor, unsigned or yes
JSON Variable Name: MediaDropBox.Options.deliveryMode
Compress Files
Follow Symbolic Links
Windows versions prior to Windows 2008 do not support symbolic links, and these agent treat the arrival of a symbolic link at a Windows target as an error, causing the transfer to fail, unless you set the follow symbolic links
option to Yes. When set to Yes, the file to which the symbolic link points is transferred under the name of the symbolic link.
Incremental Transfer
Verify for sufficient disk space before Job transfers start
Verify if target directory exists
The following list provides Notifications and Logging prompt details:
Email Condition
Description: The circumstances in which an e-mail is sent. Choose from the following:
REST/SOAP Variable Value: Always, Always Exclude Empty Transfers, On Transfer or Never
JSON Variable Name: MediaDropBox.NotificationAndLogging.EmailCondition
Email To
Email Cc
Email Bcc
Email Job Failure Report To
Log Detail Level
The following list provides SNMP prompt details:
SNMP Trap Receivers
SNMP Trap Community String
SNMP Trap Types
The following list provides Schedule prompt details:
Frequency
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following lists provide the prompt names, prompt details, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Media Mover (MediaTrigger).
The following list provides Source Specification prompt details:
Source Agent
Source Directory
Description: The source folder used for the files to be transferred. Type the folder name in the prompt, or click the computer icon to browse and select an agent folder. This is a mandatory prompt. The source folder specified may be in the following format:
Leaving the Source Data prompt empty will use the agent’s default folder.
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Skip Source Files Not Found On Send
The following list provides Destination Specification prompt details:
Target Agents
Target Directory
Directory Mapping Options
Maximum Job Date-Time Directories
Job Date/Time
has been selected, the Maximum Job Date-Time Directories setting determines the maximum number of job date/time folders to be maintained on the target system. For example, with the default value of 10, once more than 10 job date/time folders are created in the target directory, the oldest job date/time directory will be deleted so that a maximum of 10 will exist at any given time. Selectable values range from 1 through 1000 plus a value of Unlimited
, which instructs the job to never prune the job date/time directories.The following list provides Transport Options prompt details:
Use UDP Control Channel
This setting applies to all Manager/agent job control communication across the entire job. UDP versus TCP communication for agent administration via the GUI is controlled separately as part of agent configuration.
When Use UDP Control Channel is set to Yes
, all file transfers are also forced to utilize UDP WAN acceleration. That is, the Use WAN Accelerator setting is overridden. It is not possible to have job control using TCP and data transfer using UDP.
This functionality is intended to be used for firewall traversal when the TCP port cannot be opened. If this is not a requirement, then it is recommended that Use UDP Control Channel be set to No.
Use WAN Accelerator
When running a job with Use WAN Accelerator set to Yes, with a low bandwidth ceiling, or flow, or low throughput, the transfer is switched to TCP. (The cutoff value is 57200 bits/second.)
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
WAN Accelerator Aggressiveness
Bandwidth Ceiling
0
specifies auto-detection for the best bandwidth rate. Testing has shown that specifying a ceiling is faster though - as long as it is set correctly. This is because if the ceiling is set, the transfer immediately starts at that rate, rather than ramping up.Bandwidth Floor
0
specifies auto-detection for the best bandwidth rate.Bandwidth Throttle by Time of Day (in GMT time)
For example, users could specify that the job uses 50% of a 56 Kbps link between 9:00 and 5:00 Monday through Friday, 75% between 5:00 pm and 6:00 am, and 100% on the weekend. Click the plus icon (+
) to add more bandwidth throttles, or the x
to delete a throttle.
Note that once a job has started, all bandwidth throttles are applied at the times based on the Daylight Savings Time (DST) in effect when the job started. If DST changes while the job is running, bandwidth time of day changes may be off by the time change value (plus or minus an hour) after the time change.
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
You can also specify multiple controls by adding the same value after the first one, for example: 12:00;13:00;YYNNNYY;12500;13:00;14:00;YYNYNNY;1398900;.
The following list provides Advanced Options prompt details:
Verify for sufficient disk space before Job transfers start
Verify if Target Directory Exists
The following list provides Notifications and Logging prompt details:
Email Condition
Email To
Email Cc
Email Bcc
Email Job Failure Report To
Log Detail Level
The following list provides SNMP prompt details:
SNMP Trap Receivers
SNMP Trap Community String
SNMP Trap Types
The following list provides Schedule prompt details:
Frequency
Every X minutes
.4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Every X Y of the month
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following lists provide the prompt names, prompt details, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Media Mover (MediaAggregator). See (#MediaAgg">MediaAggregator JSON Example).
The following list provides Source Specification prompt details:
Source Agents
Source Data
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Include File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude Subdirectories
Subdirectories to Exclude
For example, if you specify a source folder of C:\data\docs, and an exclude folder of temp, any subfolders called temp are excluded, including those nested within another subfolder. (For example the subfolder C:\data\docs\publish\release\temp is excluded as well.)
If you who want to exclude a folder only at a certain level, use the @ symbol to anchor the exclude folder path at the starting source folder level. For example, specifying @temp in the above example means that the C:\data\docs\temp folder is excluded, but the C:\data\docs\publish\release\temp folder is included.
To exclude C:\data\docs\publish\release\ but have a source folder path of C:\data\docs, the user needs to type C:\data\docs in the Base Folder prompt and @publish\release\temp in the Subdirectories to Exclude prompt. Special characters allow you to make use of pattern matching on the folder path. To match special characters literally, you must escape special characters. Characters include the following:
*
(matches zero or more characters)
?
(matches any single character)
[...]
(matches any one of the enclosed characters - for example, [ch] would match the characters c
or h
)
A pair of digit, lowercase or uppercase characters separated by a hyphen ’-’ denotes a range set and matches any character sorted in the range. If the first character following the ’[’ is ’^’ or ’!’, then any character not enclosed is matched. Use commas to specify multiple distinct patterns.
Readiness Check Type
Specify the check type used by an agent to determine if a file is ready to be transferred. Depending on your configuration, you may or may not want to enable the file readiness check option.
For Windows agents and local Windows file systems, there is no need to use the File Readiness Check, because the core file in use behavior is sufficient.
For Windows agent and NAS Windows file system, as long as the NAS file system properly supports file locking for in-use files, the readiness check is unnecessary. However, it is still available in the event the NAS file system does not properly support file locking.
For non-Windows agents of any kind (Linux, UNIX, MacOS). If the local or network file system supports file locking, the readiness check is not required. Determine this on a case-by-case basis.
REST/SOAP Variable Value: Choose one of the following:
JSON Variable Name: MediaAggregator.Source.FileReadinessCheckType
Readiness Check Delay
MD5 Hash
, Consecutive Seek
, or Date/Time & Size
) for an open file. The file is transferred only if the results of the two checks are identical. If a large number of files are being checked, a value of 0 seconds may be sufficient, since there will likely be sufficient time between the first and second checks of a given file to determine if its content has changed without inserting an additional delay. The default value is 10 seconds.Source Deletions After Successful Transfer
There are certain requirements with the empty folders options: the folders must contain no files (they may contain other empty folders that will be removed as well). The folder cannot have been modified within the previous 5 minutes; if it has, it will not be removed.
Source Directories to Exclude from Deletion Scan
Skip Source File Not Found On Send
The following list details the Destination Specification prompts:
Target Agents
TargetDirectory
Directory Mapping Options
Maximum Job Date-Time Directories
Job Date/Time
has been selected, the Maximum Job Date-Time Directories setting determines the maximum number of job date/time folders to be maintained on the target system. For example, with the default value of 10, once more than 10 job date/time folders are created in the target directory, the oldest job date/time directory will be deleted so that a maximum of 10 will exist at any given time. Selectable values range from 1 through 1000 plus a value of Unlimited
, which instructs the job to never prune the job date/time directories.Remove Expired Files on Target
Remove Expired Directories on Target
Expiration Period
The following list provides Transport Options prompt details:
Use UDP Control Channel
Use UDP Channel
is set to No.This setting applies to all Manager/agent job control communication across the entire job. UDP versus TCP communication for agent administration via the GUI is controlled separately as part of agent configuration.
When Use UDP Control Channel is set to Yes
, all file transfers are also forced to utilize UDP WAN acceleration. That is, the Use WAN Accelerator setting is overridden. Thus it is not possible to have job control using TCP and data transfer using UDP.
This functionality is intended to be used for firewall traversal when the TCP port cannot be opened. If this is not a requirement, then it is recommended that Use UDP Control Channel be set to No
.
Use WAN Accelerator
When running a job with Use WAN Accelerator set to Yes
, with a low bandwidth ceiling, or flow, or low throughput, the transfer will be switched to TCP. (The cutoff value is 57200 bits/second.)
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
WAN Accelerator Aggressiveness
Bandwidth Ceiling
0
specifies auto-detection for the best bandwidth rate. Testing has shown that specifying a ceiling is faster though - as long as it is set correctly. This is because if the ceiling is set, the transfer immediately starts at that rate, rather than ramping up.Bandwidth Floor
0
specifies auto-detection for the best bandwidth rate.Bandwidth Throttle by Time of Day (in GMT time)
For example, users could specify that the job uses 50% of a 56 Kbps link between 9:00 and 5:00 Monday through Friday, 75% between 5:00 pm and 6:00 am, and 100% on the weekend. Click the plus icon (+
) to add more bandwidth throttles, or the x
to delete a throttle.
Note that once a job has started, all bandwidth throttles are applied at the times based on the Daylight Savings Time (DST) in effect when the job started. If DST changes while the job is running, bandwidth time of day changes may be off by the time change value (plus or minus an hour) after the time change.
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
You can also specify multiple controls by adding the same value after the first one, for example: 12:00;13:00;YYNNNYY;12500;13:00;14:00;YYNYNNY;1398900;.
bps - any number
JSON Variable Name: MediaAggregator.Transport.BandwidthThrottleByTimeOfDay
The following list provides Advanced Options prompt details:
Encryption Level
Allows specification of the encryption level from the following values:
_ No Encryption - signed: This transfers unencrypted (plain text) data, but includes the SSL protocol’s message digest calculation and signing to ensure data stream integrity.
_ No Encryption - unsigned -: This allows the transfer of data, after the initial SSL authentication of the endpoints, to proceed with no encryption, no message digest computation and no signing of the message digests (normally included with the SSL protocol. This mode of operation is only for raw performance, since it makes no guarantee of the integrity of the data stream other than the default one has with a normal network channel. The underlying TCP protocol can guarantee the integrity of messages across each single network hop, but has no facilities for detecting a man-in-the-middle attack.
The Encryption On option uses the following maximum or high encryption level: Cipher=AES256-SHA, Keysize=256/256.
The default value is No Encryption - unsigned. Note that mutual authentication is always used, regardless of the encryption level specified. Encryption is done in-stream
and not on disk prior to sending.
REST/SOAP Variable Value: high, med, low, none or off
Delivery Mode
Compress Files
Follow Symbolic Links
Windows versions prior to Windows 2008 do not support symbolic links, and these agent treat the arrival of a symbolic link at a Windows target as an error, causing the transfer to fail, unless you set the follow symbolic links
option to Yes. When set to Yes, the file to which the symbolic link points is transferred under the name of the symbolic link.
Incremental Transfer
Verify for sufficient disk space before Job transfers start
Verify if target directory exists
The following list provides Notifications and Logging prompt details:
Email Condition
Email To
Email Cc
Email Bcc
Email Job Failure Report To
Log Detail Level
The following list provides SNMP prompt details:
SNMP Trap Receivers
SNMP Trap Community String
SNMP Trap Types
The following list provides Schedule prompt details:
Frequency
Every X minutes
.4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Every X Y of the month
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following is an example of the MediaAggregator JSON.
{
"transferJob": {
"resourceID": "61",
"notifyAt": {
"replyTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp",
"faultTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp"
},
"bmObjects": {
"bmObject": [
{
"bmContents": {
"bmContent": [
{
"bmContentFormats": {
"bmContentFormat": [
{
"bmEssenceLocators": {
"bmEssenceLocator": [
{
"type": "SimpleFileLocatorType",
"file": "file://agent1.example.com/C:/storage/test.zip"
}
]
},
"packageSize": 44947460
}
]
}
}
]
}
}
]
},
"priority": "low",
"profiles": [
{
"transferProfile": [
{
"name": "Transfer Profile",
"description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"destination": "file://agent2.example.com/C:/storage/target"
}
],
"location": [
"https://manager.example.com/template/Media_Mover_Workflows/component/MediaAggregator"
],
"ExtensionGroup": [
{
"SigniantExtensionGroup": [
{
"jobContextParameters": [
{
"jobName": ["FIMS_jobName_061"],
"jobGroup": ["Default"]
}
],
"jobVariables": [
{
"JobVariableName": [
"MediaAggregator.Source.SourceAgents"
],
"JobVariableValue": ["agent1.example.com"]
},
{
"JobVariableName": [
"MediaAggregator.Source.SourceData"
],
"JobVariableValue": ["D:\\Backgrounds"]
},
{
"JobVariableName": [
"MediaAggregator.Source.IncludeFiles"
],
"JobVariableValue": ["*"]
},
{
"JobVariableName": [
"MediaAggregator.Source.ExcludeFiles"
],
"JobVariableValue": ["zimg*"]
},
{
"JobVariableName": [
"MediaAggregator.Source.ExcludeSubdirectories"
],
"JobVariableValue": ["None"]
},
{
"JobVariableName": [
"MediaAggregator.Source.ExcludeSubDirList"
],
"JobVariableValue": ["excludeMe"]
},
{
"JobVariableName": [
"MediaAggregator.Source.FileReadinessCheckType"
],
"JobVariableValue": ["Date/Time & Size"]
},
{
"JobVariableName": [
"MediaAggregator.Source.FileReadinessCheckDelay"
],
"JobVariableValue": ["10"]
},
{
"JobVariableName": [
"MediaAggregator.Source.sourceDeletionsAfterSuccessfulTransfer"
],
"JobVariableValue": ["emptydirs"]
},
{
"JobVariableName": [
"MediaAggregator.Source.sourceDirectoriestoExcludefromDeletionScan"
],
"JobVariableValue": ["notToBeDeleted"]
},
{
"JobVariableName": [
"MediaAggregator.Source.skipSourceFileNotFoundOnSend"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaAggregator.Target.TargetAgent"
],
"JobVariableValue": ["agent2.example.com"]
},
{
"JobVariableName": [
"MediaAggregator.Target.TargetDirectory"
],
"JobVariableValue": ["c:\\tmp\\Here"]
},
{
"JobVariableName": [
"MediaAggregator.Target.PathMappingOptions"
],
"JobVariableValue": ["Job Date/Time"]
},
{
"JobVariableName": [
"MediaAggregator.Target.maximumJobDateTimeDirectories"
],
"JobVariableValue": ["10"]
},
{
"JobVariableName": [
"MediaAggregator.Target.RemoveTargetFiles"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Target.removeExpiredDirectoriesonTarget"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Target.expirationPeriod"
],
"JobVariableValue": ["30"]
},
{
"JobVariableName": [
"MediaAggregator.Transport._sp_udp"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Transport.UseWANAccelerator"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaAggregator.Transport.wANAcceleratorAggressiveness"
],
"JobVariableValue": ["medium"]
},
{
"JobVariableName": [
"MediaAggregator.Transport.BandwidthCeiling"
],
"JobVariableValue": ["1250000"]
},
{
"JobVariableName": [
"MediaAggregator.Transport.BandwidthFloor"
],
"JobVariableValue": ["250000"]
},
{
"JobVariableName": [
"MediaAggregator.Transport.BandwidthThrottleByTimeOfDay"
],
"JobVariableValue": ["09:00;23:00;YYYYYYY;625000;"]
},
{
"JobVariableName": [
"MediaAggregator.Options._sp_encryption"
],
"JobVariableValue": ["off"]
},
{
"JobVariableName": [
"MediaAggregator.Options.deliveryMode"
],
"JobVariableValue": ["unsigned"]
},
{
"JobVariableName": [
"MediaAggregator.Options.CompressFiles"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Options.followSymbolicLinks"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaAggregator.Options.IncrementalTransfer"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Options.verifyforsufficientdiskspacebeforeJobtransfersstart"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Options.verifytargetdirectoryexists"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging.EmailCondition"
],
"JobVariableValue": ["Always"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging.EmailTo"
],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging.EmailCc"
],
"JobVariableValue": ["user2@example.com"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging.EmailBcc"
],
"JobVariableValue": ["user3@example.com"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging.emailJobFailureReportTo"
],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": [
"MediaAggregator.NotificationAndLogging._sp_log_severity"
],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"MediaAggregator.sNMPProperties.sNMPTrapReceivers"
],
"JobVariableValue": ["192.168.1.205"]
},
{
"JobVariableName": [
"MediaAggregator.sNMPProperties.sNMPTrapCommunityString"
],
"JobVariableValue": ["cString"]
},
{
"JobVariableName": [
"MediaAggregator.sNMPProperties.sNMPTrapTypes"
],
"JobVariableValue": ["Success,Failure"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule._sp_frequency"
],
"JobVariableValue": ["Once"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule._sp_start_at"
],
"JobVariableValue": ["2020/08/18 10:00:00"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule.timezone"
],
"JobVariableValue": ["America/New_York"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule._sp_interrupt_on_failure"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule.priority"
],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"MediaAggregator.Schedule.finishBefore"
],
"JobVariableValue": ["2020/08/27 10:00:00"]
}
]
}
]
}
]
}
]
}
]
}
}
The following sections provide the prompt names, description, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Media Mover (MediaDistributor).
The following list provides Source Specification prompt details:
Source Agents
Source Data
Description: The source folder used for the files to be transferred. This is a mandatory prompt. Type the folder name in the prompt, or click the computer icon to browse and select an agent folder. The source folder specified may be in the following format:
Windows root drives, e.g., C:\ApplicationData
UNIX root drives, e.g., /home
Windows UNC path names, e.g., \machine1\applicationdata
Leaving the Source Data prompt empty will use the agent’s default folder.
<siglist type="filedir">
<el v="c:\Temp" t="d"></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Include File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude Subdirectories
Subdirectories to Exclude
For example, if you specify a source folder of C:\data\docs, and an exclude folder of temp, any subfolders called temp are excluded, including those nested within another subfolder. (For example the subfolder C:\data\docs\publish\release\temp is excluded as well.)
If you who want to exclude a folder only at a certain level, use the @ symbol to anchor the exclude folder path at the starting source folder level. For example, specifying @temp in the above example means that the C:\data\docs\temp folder is excluded, but the C:\data\docs\publish\release\temp folder is included.
To exclude C:\data\docs\publish\release\ but have a source folder path of C:\data\docs, the user needs to type C:\data\docs in the Base Folder prompt and @publish\release\temp in the Subdirectories to Exclude prompt. Special characters allow you to make use of pattern matching on the folder path. To match special characters literally, you must escape special characters. Characters include the following:
*
(matches zero or more characters)
?
(matches any single character)
[...]
(matches any one of the enclosed characters - for example, [ch] would match the characters c
or h
)
A pair of digit, lowercase or uppercase characters separated by a hyphen ’-’ denotes a range set and matches any character sorted in the range. If the first character following the ’[’ is ’^’ or ’!’, then any character not enclosed is matched. Use commas to specify multiple distinct patterns.
File Readiness Check Type
Description: Specify the kind of check type an agent uses to determine if a file is ready to be transferred (i.e., the file is not in use). For some configurations, you may or may not wish to select the file readiness check option:
For Windows agents and local Windows file systems, there is no need to use the file readiness check, because the core file in use· behavior is sufficient.
For Windows agent and NAS Windows file system, as long as the NAS file system properly supports file locking for in-use files, the readiness check is unnecessary. However, it is still available in case the NAS file system does not properly support file locking.
For non-Windows agents of any kind (Linux, UNIX, MacOS). If the local or network file system supports file locking, the readiness check is not required. Determine this on a case-by-case basis.
REST/SOAP Variable Value: Choose one of the following:
JSON Variable Name: MediaDistributor.Source.FileReadinessCheckType
Readiness Check Delay
MD5 Hash
, Consecutive Seek
, or Date/Time & Size
) for an open file. The file is transferred only if the results of the two checks are identical. If a large number of files are being checked, a value of 0 seconds may be sufficient, since there will likely be sufficient time between the first and second checks of a given file to determine if its content has changed without inserting an additional delay. The default value is 10 seconds.Source Deletions After Successful Transfer
Description: Specifies removal of files or folders from the Drop Box Folder after a successful transfer. The options are:
There are certain requirements with the empty folders options: the folders must contain no files (they may contain other empty folders that will be removed as well). The folder cannot have been modified within the previous 5 minutes; if it has, it will not be removed.
Source Directories to Exclude from Deletion Scan
Skip Source File Not Found On Send
The following list details the Destination Specification prompts:
Target Agents
TargetDirectory
Directory Mapping Options
Maximum Job Date-Time Directories
Job Date/Time
has been selected, the Maximum Job Date-Time Directories setting determines the maximum number of job date/time folders to be maintained on the target system. For example, with the default value of 10, once more than 10 job date/time folders are created in the target directory, the oldest job date/time directory will be deleted so that a maximum of 10 will exist at any given time. Selectable values range from 1 through 1000 plus a value of Unlimited
, which instructs the job to never prune the job date/time directories.Remove Expired Files on Target
Remove Expired Directories on Target
Expiration Period
The following list provides Transport Options prompt details:
Use UDP Control Channel
This setting applies to all Manager/agent job control communication across the entire job. UDP versus TCP communication for agent administration via the GUI is controlled separately as part of agent configuration.
When Use UDP Control Channel is set to Yes
, all file transfers are also forced to utilize UDP WAN acceleration. That is, the Use WAN Accelerator setting is overridden. Thus it is not possible to have job control using TCP and data transfer using UDP.
This functionality is intended to be used for firewall traversal when the TCP port cannot be opened. If this is not a requirement, then it is recommended that Use UDP Control Channel be set to No
.
Use WAN Accelerator
When running a job with Use WAN Accelerator
set to Yes
, with a low bandwidth ceiling, or flow, or low throughput, the transfer will be switched to TCP. (The cutoff value is 57200 bits/second.)
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
WAN Accelerator Aggressiveness
Bandwidth Ceiling
0
specifies auto-detection for the best bandwidth rate. Testing has shown that specifying a ceiling is faster though - as long as it is set correctly. This is because if the ceiling is set, the transfer immediately starts at that rate, rather than ramping up.Bandwidth Floor
0
specifies auto-detection for the best bandwidth rate.Bandwidth Throttle by Time of Day (in GMT time)
For example, users could specify that the job uses 50% of a 56 Kbps link between 9:00 and 5:00 Monday through Friday, 75% between 5:00 pm and 6:00 am, and 100% on the weekend. Click the plus icon (+
) to add more bandwidth throttles, or the x
to delete a throttle.
Note that once a job has started, all bandwidth throttles are applied at the times based on the Daylight Savings Time (DST) in effect when the job started. If DST changes while the job is running, bandwidth time of day changes may be off by the time change value (plus or minus an hour) after the time change.
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
You can also specify multiple controls by adding the same value after the first one, for example: 12:00;13:00;YYNNNYY;12500;13:00;14:00;YYNYNNY;1398900;.
bps any number
JSON Variable Name: MediaDistributor.Transport.BandwidthThrottleByTimeOfDay
The following list provides Advanced Options prompt details:
Encryption Level
Allows specification of the encryption level from the following values:
_ No Encryption - signed: This transfers unencrypted (plain text) data, but includes the SSL protocol’s message digest calculation and signing to ensure data stream integrity.
_ No Encryption - unsigned -: This allows the transfer of data, after the initial SSL authentication of the endpoints, to proceed with no encryption, no message digest computation and no signing of the message digests (normally included with the SSL protocol. This mode of operation is only for raw performance, since it makes no guarantee of the integrity of the data stream other than the default one has with a normal network channel. The underlying TCP protocol can guarantee the integrity of messages across each single network hop, but has no facilities for detecting a man-in-the-middle attack.
The Encryption On option uses the following maximum or high encryption level: Cipher=AES256-SHA, Keysize=256/256.
The default value is No Encryption - unsigned. Note that mutual authentication is always used, regardless of the encryption level specified. Encryption is done in-stream
and not on disk prior to sending.
Delivery Mode
Compress Files
Follow Symbolic Links
Windows versions prior to Windows 2008 do not support symbolic links, and these agent treat the arrival of a symbolic link at a Windows target as an error, causing the transfer to fail, unless you set the follow symbolic links
option to Yes. When set to Yes, the file to which the symbolic link points is transferred under the name of the symbolic link.
Incremental Transfer
Verify for sufficient disk space before Job transfers start
Verify if target directory exists
The following list provides Notifications and Logging prompt details:
Email Condition
Email To
Email Cc
Email Bcc
Email Job Failure Report To
Log Detail Level
The following list provides SNMP prompt details:
SNMP Trap Receivers
SNMP Trap Community String
SNMP Trap Types
The following list provides Schedule prompt details:
Frequency
Every X minutes
.4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Every X Y of the month
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The following is an example of the MediaDistributor JSON.
{
"transferJob": {
"resourceID": "61",
"notifyAt": {
"replyTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp",
"faultTo": "http://client-pc.example.com:6545/FIMSResponse/response.jsp"
},
"bmObjects": {
"bmObject": [
{
"bmContents": {
"bmContent": [
{
"bmContentFormats": {
"bmContentFormat": [
{
"bmEssenceLocators": {
"bmEssenceLocator": [
{
"type": "SimpleFileLocatorType",
"file": "file://agent1.example.com/C:/storage/test.zip"
}
]
},
"packageSize": 44947460
}
]
}
}
]
}
}
]
},
"priority": "low",
"profiles": [
{
"transferProfile": [
{
"name": "Transfer Profile",
"description": "Highspeed Transfer Delivery",
"transferAtom": [
{
"destination": "file://agent2.example.com/C:/storage/target"
}
],
"location": [
"https://manager.example.com/template/Media_Mover_Workflows/component/MediaDistributor"
],
"ExtensionGroup": [
{
"SigniantExtensionGroup": [
{
"jobContextParameters": [
{
"jobName": ["FIMS_jobName_061"],
"jobGroup": ["Default"]
}
],
"jobVariables": [
{
"JobVariableName": [
"MediaDistributor.Source.SourceAgent"
],
"JobVariableValue": ["agent1.example.com"]
},
{
"JobVariableName": [
"MediaDistributor.Source.SourceData"
],
"JobVariableValue": ["D:\\Backgrounds"]
},
{
"JobVariableName": [
"MediaDistributor.Source.IncludeFiles"
],
"JobVariableValue": ["*"]
},
{
"JobVariableName": [
"MediaDistributor.Source.ExcludeFiles"
],
"JobVariableValue": ["zimg*"]
},
{
"JobVariableName": [
"MediaDistributor.Source.ExcludeSubdirectories"
],
"JobVariableValue": ["None"]
},
{
"JobVariableName": [
"MediaDistributor.Source.ExcludeSubDirList"
],
"JobVariableValue": ["excludeMe"]
},
{
"JobVariableName": [
"MediaDistributor.Source.FileReadinessCheckType"
],
"JobVariableValue": ["Date/Time & Size"]
},
{
"JobVariableName": [
"MediaDistributor.Source.FileReadinessCheckDelay"
],
"JobVariableValue": ["10"]
},
{
"JobVariableName": [
"MediaDistributor.Source.sourceDeletionsAfterSuccessfulTransfer"
],
"JobVariableValue": ["emptydirs"]
},
{
"JobVariableName": [
"MediaDistributor.Source.sourceDirectoriestoExcludefromDeletionScan"
],
"JobVariableValue": ["notToBeDeleted"]
},
{
"JobVariableName": [
"MediaDistributor.Source.skipSourceFileNotFoundOnSend"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaDistributor.Target.TargetAgents"
],
"JobVariableValue": ["agent2.example.com"]
},
{
"JobVariableName": [
"MediaDistributor.Target.TargetDirectory"
],
"JobVariableValue": ["c:\\tmp\\Here"]
},
{
"JobVariableName": [
"MediaDistributor.Target.PathMappingOptions"
],
"JobVariableValue": ["Job Date/Time"]
},
{
"JobVariableName": [
"MediaDistributor.Target.maximumJobDateTimeDirectories"
],
"JobVariableValue": ["10"]
},
{
"JobVariableName": [
"MediaDistributor.Target.RemoveTargetFiles"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Target.removeExpiredDirectoriesonTarget"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Target.expirationPeriod"
],
"JobVariableValue": ["30"]
},
{
"JobVariableName": [
"MediaDistributor.Transport._sp_udp"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Transport.UseWANAccelerator"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaDistributor.Transport.wANAcceleratorAggressiveness"
],
"JobVariableValue": ["medium"]
},
{
"JobVariableName": [
"MediaDistributor.Transport.BandwidthCeiling"
],
"JobVariableValue": ["1250000"]
},
{
"JobVariableName": [
"MediaDistributor.Transport.BandwidthFloor"
],
"JobVariableValue": ["250000"]
},
{
"JobVariableName": [
"MediaDistributor.Transport.BandwidthThrottleByTimeOfDay"
],
"JobVariableValue": ["09:00;23:00;YYYYYYY;625000;"]
},
{
"JobVariableName": [
"MediaDistributor.Options._sp_encryption"
],
"JobVariableValue": ["off"]
},
{
"JobVariableName": [
"MediaDistributor.Options.deliveryMode"
],
"JobVariableValue": ["unsigned"]
},
{
"JobVariableName": [
"MediaDistributor.Options.CompressFiles"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Options.followSymbolicLinks"
],
"JobVariableValue": ["yes"]
},
{
"JobVariableName": [
"MediaDistributor.Options.IncrementalTransfer"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Options.verifyforsufficientdiskspacebeforeJobtransfersstart"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Options.verifytargetdirectoryexists"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging.EmailCondition"
],
"JobVariableValue": ["Always"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging.EmailTo"
],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging.EmailCc"
],
"JobVariableValue": ["user1@example.com"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging.EmailBcc"
],
"JobVariableValue": ["user2@example.com"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging.emailJobFailureReportTo"
],
"JobVariableValue": ["user@example.com"]
},
{
"JobVariableName": [
"MediaDistributor.NotificationAndLogging._sp_log_severity"
],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"MediaDistributor.sNMPProperties.sNMPTrapReceivers"
],
"JobVariableValue": ["192.168.1.205"]
},
{
"JobVariableName": [
"MediaDistributor.sNMPProperties.sNMPTrapCommunityString"
],
"JobVariableValue": ["cString"]
},
{
"JobVariableName": [
"MediaDistributor.sNMPProperties.sNMPTrapTypes"
],
"JobVariableValue": ["Success,Failure"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule._sp_frequency"
],
"JobVariableValue": ["Once"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule._sp_start_at"
],
"JobVariableValue": ["2020/08/18 10:00:00"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule.timezone"
],
"JobVariableValue": ["America/New_York"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule._sp_interrupt_on_failure"
],
"JobVariableValue": ["no"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule.priority"
],
"JobVariableValue": ["2"]
},
{
"JobVariableName": [
"MediaDistributor.Schedule.finishBefore"
],
"JobVariableValue": ["2020/08/27 10:00:00"]
}
]
}
]
}
]
}
]
}
]
}
}
The following sections provide the prompt names, description, REST/SOAP variable values and JSON variable names that you need to understand and use when developing your FIMS client to work with Media Mover (MediaReplicator).
The following list provides Source Specification prompt details:
Source Agents
Source Data
Description: The source folder used for the files to be transferred. This is a mandatory prompt. Type the folder name in the prompt, or click the computer icon to browse and select an agent folder. The source folder specified may be in the following format:
Windows root drives, e.g., C:\ApplicationData
UNIX root drives, e.g., /home
Windows UNC path names, e.g., \machine1\applicationdata
Leaving the Source Data prompt empty will use the agent’s default folder.
<siglist type="filedir">
<el v="c:\Temp` t="d`></el>
<el v="e:\dist\source\test.txt" t="f"></el>
</siglist>
The XML should have this format, the el v attribute should contain the full path to the file or folder, and the el t attribute should contain the type of the entry (f for file, d for directory).
Include File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude File Patterns
*.doc
, *.png
, file*.*
, *file*.txt
.Exclude Subdirectories
Subdirectories to Exclude
For example, if you specify a source folder of C:\data\docs, and an exclude folder of temp, any subfolders called temp are excluded, including those nested within another subfolder. (For example the subfolder C:\data\docs\publish\release\temp is excluded as well.)
If you who want to exclude a folder only at a certain level, use the @ symbol to anchor the exclude folder path at the starting source folder level. For example, specifying @temp in the above example means that the C:\data\docs\temp folder is excluded, but the C:\data\docs\publish\release\temp folder is included.
To exclude C:\data\docs\publish\release\ but have a source folder path of C:\data\docs, the user needs to type C:\data\docs in the Base Folder prompt and @publish\release\temp in the Subdirectories to Exclude prompt. Special characters allow you to make use of pattern matching on the folder path. To match special characters literally, you must escape special characters. Characters include the following:
*
(matches zero or more characters)
?
(matches any single character)
[...]
(matches any one of the enclosed characters - for example, [ch] would match the characters c
or h
)
A pair of digit, lowercase or uppercase characters separated by a hyphen ’-’ denotes a range set and matches any character sorted in the range. If the first character following the ’[’ is ’^’ or ’!’, then any character not enclosed is matched. Use commas to specify multiple distinct patterns.
Skip Source File Not Found On Send
The following list details the Destination Specification prompts:
Target Agents
TargetDirectory
The following list provides Transport Options prompt details:
Use UDP Control Channel
This setting applies to all Manager/agent job control communication across the entire job. UDP versus TCP communication for agent administration via the GUI is controlled separately as part of agent configuration.
When Use UDP Control Channel is set to Yes
, all file transfers are also forced to utilize UDP WAN acceleration. That is, the Use WAN Accelerator setting is overridden. Thus it is not possible to have job control using TCP and data transfer using UDP.
This functionality is intended to be used for firewall traversal when the TCP port cannot be opened. If this is not a requirement, then it is recommended that Use UDP Control Channel
be set to No
.
Use WAN Accelerator
When running a job with Use WAN Accelerator set to Yes, with a low bandwidth ceiling, or flow, or low throughput, the transfer will be switched to TCP. (The cutoff value is 57200 bits/second.)
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
WAN Accelerator Aggressiveness
Description: Indicates how sensitive the job is to other network traffic when it is running. Choose one of the following:
REST/SOAP Variable Value: high, medium or low
JSON Variable Name: MediaReplicator.Transport.WANAcceleratorAggressiveness
Bandwidth Ceiling
0
specifies auto-detection for the best bandwidth rate. Testing has shown that specifying a ceiling is faster though - as long as it is set correctly. This is because if the ceiling is set, the transfer immediately starts at that rate, rather than ramping up.Bandwidth Floor
0
specifies auto-detection for the best bandwidth rate.Bandwidth Throttle by Time of Day (in GMT time)
For example, users could specify that the job uses 50% of a 56 Kbps link between 9:00 and 5:00 Monday through Friday, 75% between 5:00 pm and 6:00 am, and 100% on the weekend. Click the plus icon (+
) to add more bandwidth throttles, or the x
to delete a throttle.
Note that once a job has started, all bandwidth throttles are applied at the times based on the Daylight Savings Time (DST) in effect when the job started. If DST changes while the job is running, bandwidth time of day changes may be off by the time change value (plus or minus an hour) after the time change.
Note: Bandwidth throttles may also be employed by other network devices and policies (e.g., QoS), therefore, a bandwidth throttle (or target maximum) defined here may not be achievable. If you are having difficulty achieving a particular bandwidth target ensure that other policies are not impacting your ability to reach the desired throughput.
You can also specify multiple controls by adding the same value after the first one, for example: 12:00;13:00;YYNNNYY;12500;13:00;14:00;YYNYNNY;1398900;.
bps any number
JSON Variable Name: MediaReplicator.Transport.BandwidthThrottleByTimeOfDay
The following list provides Advanced Options prompt details:
Encryption Level
Allows specification of the encryption level from the following values:
_ No Encryption - signed: This transfers unencrypted (plain text) data, but includes the SSL protocol’s message digest calculation and signing to ensure data stream integrity.
_ No Encryption - unsigned: This allows the transfer of data, after the initial SSL authentication of the endpoints, to proceed with no encryption, no message digest computation and no signing of the message digests (normally included with the SSL protocol). This mode of operation is only for raw performance, since it makes no guarantee of the integrity of the data stream other than the default one has with a normal network channel. The underlying TCP protocol can guarantee the integrity of messages across each single network hop, but has no facilities for detecting a man-in-the-middle attack.
The Encryption On option uses the following maximum or high encryption level: Cipher=AES256-SHA, Keysize=256/256
The default value is No Encryption - unsigned. Note that mutual authentication is always used, regardless of the encryption level specified. Encryption is done in-stream
and not on disk prior to sending.
Delivery Mode
Compress Files
Follow Symbolic Links
Windows versions prior to Windows 2008 do not support symbolic links, and these agent treat the arrival of a symbolic link at a Windows target as an error, causing the transfer to fail, unless you set the follow symbolic links option to Yes. When set to Yes, the file to which the symbolic link points is transferred under the name of the symbolic link.
Incremental Transfer
Synchronize Target with Source
Be very careful when enabling the synchronize option due to the fact that it deletes content at the target end. This deleted data is not recoverable via Signiant.
Enabling this option is incompatible with the Follow Symbolic Links option.
Verify for sufficient disk space before Job transfers start
Verify if target directory exists
The following list provides Notifications and Logging prompt details:
Email Condition
Email To
Email Cc
Email Bcc
Email Job Failure Report To
Log Detail Level
The following list provides SNMP prompt details:
SNMP Trap Receivers
SNMP Trap Community String
SNMP Trap Types
The following list provides Schedule prompt details:
Frequency
Every X minutes
.4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Every X Y of the month
Every X minutes
, Any (First,Second,Third,Fourth)(blankspace)(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) representing Every X Y of the month
, Any (number)(blankspace)(letter) 4 D
, representing: H > Hour(s), D > Day(s), W > Week(s), M > Month(s), Y > Year(s).Start Date/Time
Time Zone
Interrupt on Failure
Priority
Finish Before
The possible REST/SOAP Variable Values for the Time Zone prompt are listed in the following table.
REST/SOAP Value | Time Zone |
---|---|
Etc/GMT+12 | (GMT-12:00) International Date Line West |
Pacific/Apia | (GMT-11:00) Midway Island, Samoa |
Pacific/Honolulu | (GMT-10:00) Hawaii |
America/Anchorage | (GMT-09:00) Alaska |
America/Los_Angeles | (GMT-08:00) Pacific Time (US & Canada); Tijuana |
America/Phoenix | (GMT-07:00) Arizona |
America/Denver | (GMT-07:00) Mountain Time (US & Canada) |
America/Chihuahua | (GMT-07:00) Chihuahua, La Paz, Mazatlan |
America/Managua | (GMT-06:00) Central America |
America/Regina | (GMT-06:00) Saskatchewan |
America/Mexico_City | (GMT-06:00) Guadalajara, Mexico City, Monterrey |
America/Chicago | (GMT-06:00) Central Time (US & Canada) |
America/Indianapolis | (GMT-05:00) Indiana (East) |
America/Bogota | (GMT-05:00) Bogota, Lima, Quito |
America/New_York | (GMT-05:00) Eastern Time (US & Canada) |
America/Caracas | (GMT-04:00) Caracas, La Paz |
America/Santiago | (GMT-04:00) Santiago |
America/Halifax | (GMT-04:00) Atlantic Time (Canada) |
America/St_Johns | (GMT-03:30) Newfoundland |
America/Buenos_Aires | (GMT-03:00) Buenos Aires, Georgetown |
America/Godthab | (GMT-03:00) Greenland |
America/Sao_Paulo | (GMT-03:00) Brasilia |
America/Noronha | (GMT-02:00) Mid-Atlantic |
Atlantic/Cape_Verde | (GMT-01:00) Cape Verde Is |
Atlantic/Azores | (GMT-01:00) Azores |
Africa/Casablanca | (GMT) Casablanca, Monrovia |
Europe/London | (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London |
Africa/Lagos | (GMT+01:00) West Central Africa |
Europe/Berlin | (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna |
Europe/Paris | (GMT+01:00) Brussels, Copenhagen, Madrid, Paris |
Europe/Sarajevo | (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb |
Africa/Nairobi | (GMT+03:00) Nairobi |
Asia/Riyadh | (GMT+03:00) Kuwait, Riyadh |
Europe/Moscow | (GMT+03:00) Moscow, St. Petersburg, Volgograd |
Asia/Baghdad | (GMT+03:00) Baghdad |
Asia/Tehran | (GMT+03:30) Tehran |
Asia/Muscat | (GMT+04:00) Abu Dhabi, Muscat |
Asia/Tbilisi | (GMT+04:00) Baku, Tbilisi, Yerevan |
Asia/Kabul | (GMT+04:30) Kabul |
Asia/Karachi | (GMT+05:00) Islamabad, Karachi, Tashkent |
Asia/Yekaterinburg | (GMT+05:00) Ekaterinburg |
Asia/Calcutta | (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi |
Asia/Katmandu | (GMT+05:45) Kathmandu |
Asia/Colombo | (GMT+06:00) Sri Jayawardenepura |
Asia/Dhaka | (GMT+06:00) Astana, Dhaka |
Asia/Novosibirsk | (GMT+06:00) Almaty, Novosibirsk |
Asia/Rangoon | (GMT+06:30) Rangoon |
Asia/Bangkok | (GMT+07:00) Bangkok, Hanoi, Jakarta |
Asia/Krasnoyarsk | (GMT+07:00) Krasnoyarsk |
Australia/Perth | (GMT+08:00) Perth |
Asia/Taipei | (GMT+08:00) Taipei |
Asia/Singapore | (GMT+08:00) Kuala Lumpur, Singapore |
Asia/Hong_Kong | (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi |
Asia/Irkutsk | (GMT+08:00) Irkutsk, Ulaan Bataar |
Asia/Tokyo | (GMT+09:00) Osaka, Sapporo, Tokyo |
Asia/Seoul | (GMT+09:00) Seoul |
Asia/Yakutsk | (GMT+09:00) Yakutsk |
Australia/Darwin | (GMT+09:30) Darwin |
Australia/Adelaide | (GMT+09:30) Adelaide |
Pacific/Guam | (GMT+10:00) Guam, Port Moresby |
Australia/Brisbane | (GMT+10:00) Brisbane |
Asia/Vladivostok | (GMT+10:00) Vladivostok |
Australia/Hobart | (GMT+10:00) Hobart |
Australia/Sydney | (GMT+10:00) Canberra, Melbourne, Sydney |
Asia/Magadan | (GMT+11:00) Magadan, Solomon Is., New Caledonia |
Pacific/Fiji | (GMT+12:00) Fiji, Kamchatka, Marshall Is |
Pacific/Auckland | (GMT+12:00) Auckland, Wellington |
Pacific/Tongatapu | (GMT+13:00) Nuku'alofa |