Transfer Asset - Conditional (Select) Transfers

Updated on December 8th, 2022

Many workflows can be done with transfer asset, but there are some shortfalls that make it a bit more difficult to manage.

It is frequently desirable to transfer assets in a sequence of destinations, such as Download Hi-Res, MediaInfo, Proxy, Delete Hi-Res but these are hard to define. This has been previously dealt with via resolve XML's In most cases, and although still valid, conditional transfers allow us to chain transfers in a similar light with more options to configure the outcome.

Within these sequences, it is desirable to be able to only send some assets to one of the destinations, such as not sending images to Process Captions, based on a condition.

Chaining select transfers on an Ingest mediastore can allow us to set conditions or metadata on an asset, then use the metadata to trigger a subsequent select transfer mediastore to deliver the asset to a logic gated mediastore for further manipulation.

Select Transfers

Select transfers are a specific version of a conditional transfers where:

  • We look at the value of a metadata field (or fields)
  • We use that value in a lookup table
  • We transfer to the destination.

 

Configuration

Field

Description

Example

SelectTransferDefaultStore

The name of the store to transfer to if there are no matches. Special values #here and #none can be used to transfer to this store or no store at all respectively.

#here

SelectTransferHereWorkflow

If the select results in transferring to this store (ie the result is #here)

Spawn - Anaylse Asset

SelectTransferMetadataName

The metadata name or names to use for the select. They can be separated with a semicolon to match multiple metadata. The value AssetType can be used for lookups on asset type.

CardType

SelectTransferMode

The mode to use. If set to Direct, will simply call the transfer workflow directly from here without going through Transfer Asset first. Otherwise, will call Transfer Asset

Direct

SelectTransferTable

The lookup table for metadata. This is separated by bars for each row, then each row as a colon separated value such that the destination is after the colon. The value before the colon is the match string, which is separated by semicolons. Values are either verbatim matches for the metadata or the value * - a star matches all values including no value set at all. The first match found will be the transfer target.

c300:ANALYSE-C300-CARD|p2:ANALYSE-P2-CARD|red:REDINFO

Workflow

To use this workflow, this is required.

Spawn - Select Transfer

 

Example store:

To transfer based on asset type

SelectTransferTable = media:INGEST-MEDIA|audio:INGEST-MEDIA|image:INGEST-OTHER|scratchpad:INGEST-COLLECTION

SelectTransferMetadataName = AssetType

SelectTransferDefaultStore =

SelectTransferHereWorkflow = <workflow to transfer to this media store>

SelectTransferMode = Transfer

Workflow = Spawn - Select Transfer

SourceRequired = false

This uses case insensitive matches, and the match must match the whole string.

The delivery of assets transferred to this store would be based on the asset type and delivered to the subsequent store as a result. The next defined store could be a further select transfer store to apply logic. This chaining option allows us to manipulate destinations in a very granular way If needs be, which outperforms resolve XML logic, which Is quite rigid. 

Example Store from existing deployment:

In a real-world example, we have an Ingest Mediastore below, here It transfers to a number of mediastores to complete Ingest of a video, the last step being "SELECT TRANSFER"

This allows us to set a condition on the transfer to the transfer store "FABRIC-CREATION", Rather than have that as part of the Ingest mediastores transfer mediastores, we use the conditional store to deliver the asset based on a logic condition (in this case a Boolean metadata value).

In this Image we see a Boolean type metadata as the condition and the result of true as the transfer option to deliver to a mediastore, If false, nothing happens and the sequence of transfers would continue on In the parent Ingest store.

A screenshot of a computer

Description automatically generated with medium confidence

 

 

Was this article helpful?