---
# System prepended metadata

title: LADB OMS Product Manual

---

---
title: LADB OMS Product Manual
---
![](https://hackmd.io/_uploads/BJuqVvla5.png)

# LADB Gadget (OMS) Product Manual
Version: **1.3**
Last updated: **July 2022**
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
**Copyright and Subject to Contract Information** 

The information contained in this document is the proprietary and exclusive property of TMT Insights Group, LLC (“TMT”), except as otherwise indicated. No part of this document, in whole or in part, may be reproduced, stored, transmitted, or used for any purposes without the prior written permission of TMT. This document is not legally binding and does not constitute an offer upon which a binding contract can be formed. All terms and conditions of services to be provided by TMT shall be set forth in a separate agreement executed by all parties.


---
<br>

# Table of Contents

[TOC]

<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
---

# System Overview

The **Operational Management System (OMS)** is a **media management platform** that controls, monitors, and surfaces media fulfillment data. The OMS enables users to monitor the health of their business, analyze processes, and provide actionable insight via interactive and customizable visualizations.

Integrated with third party apps such as  SDVI Rally, Rightsline, and BeBanjo, the OMS combines both an **order management system** with **extensible task management queues** so that users have a unified view of supply chain data that leverages each core component/integration.

This tutorial teaches you OMS essentials as a new user. This QuickStart guide will show you:

* how to log into OMS
* how to set up roles and permissions for specific customers
* how to create studios, brands and titles in Rightsline
* OMS supply chain fundamentals
* how to create OMS customer profiles
* how to place and manage orders, jobs, and tasks in the OMS
* how to navigate and manage your titles in File Manager
    
This QuickStart guide will also show you the OMS interface and the terminologies, naming and file conventions used in the platform, and additional workflows and use cases.


# Getting Started

## Logging In

To complete this tutorial using this QuickStart guide, you need to have an Okta account.

Access to the OMS is enabled via Okta. All LADB users that have single sign-on authorization enabled and access requested should be able to view the OMS app in their LADB Okta apps list.

1.  Open a browser and log into your LADB Okta platform using your user credentials.
> **Note:** The following browsers are compatible with OMS:
>- **Fully supported:**
>--   Chrome: version 93.0.4577+
>--   Safari: version 15+
>--   Edge: version 93+
>- **Limited support:**
>-- Firefox
2.  Click the OMS app from the LADB Okta apps list.
3.  The OMS dashboard is displayed once single sign-on access is authorized.

## Roles and Permissions

OMS Roles and Permissions can be configured in Okta by a super administrator or an LADB user who has Okta OrgAdmin group permissions.

Roles and Permissions help you manage Okta user groups, including their access to specific database of titles according to their Customer Profile type.

In Okta, there are four user groups, with the user group definition based on the permission types on each OMS feature:

![](https://hackmd.io/_uploads/rkp4HDTCc.png)
> *Limited to WRITE (create) or READ (Access/View) permission by the Customer Profile/s allocated to the LADB user

> ** Can READ/WRITE to any Customer


Refer to the following Okta documentation for steps on:

-   [Custom administrator roles](https://help.okta.com/en/prod/Content/Topics/Security/custom-admin-role/custom-admin-roles.htm) (or how to configure granular permissions within a role)
-   [Standard roles](https://help.okta.com/en/prod/Content/Topics/Security/custom-admin-role/use-standard-roles.htm)
-   [Users, groups, and profiles](https://help.okta.com/en/prod/Content/Topics/users-groups-profiles/usgp-main.htm)
-   [Guidance for structuring user groups](https://help.okta.com/en/prod/Content/Topics/Security/administrators-structure-groups.htm)
-   [Best practices for creating custom role assignments](https://help.okta.com/en/prod/Content/Topics/Security/custom-admin-role/best-practices-custom-admin-roles.htm)

### Create a new Okta user and assign to a user group

> **Note:** You need to be a super administrator or an LADB user who has Okta OrgAdmin group permissions in order to do this.

Perform the following steps in the following documentation if you are providing OMS access and feature permissions for a new LADB user: [Create a user and assign a user type](https://help.okta.com/en-us/Content/Topics/users-groups-profiles/usgp-create-assign-user-type.htm)

You can also use the same process in removing an Okta user to a user group. Refer to the following [Okta documentation](https://help.okta.com/en/prod/Content/Topics/users-groups-profiles/usgp-remove-group-people.htm) for more information. 

### Add permission to a user group 

> Note: This may only be applicable if there is a new OMS feature. 

To add a new permission to a user group, follow the steps in [editing resources for a standard role assignment in Okta](https://help.okta.com/oie/en-us/Content/Topics/Security/custom-admin-role/edit-resources-standard-role.htm). 

Before adding a new permission to a user group, we recommend that you review [best practices for creating custom role assignments](https://help.okta.com/en/prod/Content/Topics/Security/custom-admin-role/best-practices-custom-admin-roles.htm). 


# The OMS Browser and user interfaces

The OMS platform is comprised of five (5) main user interfaces:

1.  The OMS **Dashboard** provides a high-level visualization of content orders, filterable by date month, in order for a user to identify actionable items and see business trends. Users can view order and delivery performance and navigate directly into orders in specific states.

    ![](https://hackmd.io/_uploads/HkMhAUaR5.jpg)

    ![](https://hackmd.io/_uploads/H1GsJvT0q.jpg)

2.  The **Orders** interface shows a list of content orders at a high level (with optional filters and saved searches). Along with an order’s status and progress, you can click into the Jobs that comprise the Order or edit the Order’s details.
    
    > **Note:** An Order is a grouping of line-item jobs.

    ![](https://hackmd.io/_uploads/HkmnkDpRq.jpg)
    
    ![](https://hackmd.io/_uploads/S1h3kvT05.jpg)
    
3.  The **Jobs** interface shows a list of actionable Jobs that users can navigate into.
      
    >**Note:** Jobs are line items within an Order.

    ![](https://hackmd.io/_uploads/Ska6JPTC5.jpg)
    
    ![](https://hackmd.io/_uploads/HkI01DaA9.jpg)
    
4. The **Task Management** module allows you to view specific types of Tasks comprised within a job.
    
    **Pending Assets** – Tasks that require assets to be       ingested against a SDVI-created shell record, or future     use asset, so that the job can continue to the next         processing state.
    
    ![](https://hackmd.io/_uploads/SkNxxvp05.jpg)

    ![](https://hackmd.io/_uploads/ByRelD605.jpg)

    **Review Task** – Tasks that require video quality control (QC) screening before it can be edited or delivered.
    
    ![](https://hackmd.io/_uploads/rJMQlvTR5.jpg)

    ![](https://hackmd.io/_uploads/HJiQgv605.jpg)

    **Edit Tasks** – Tasks that require editing of a master     source asset in Adobe Premiere. 

    ![](https://hackmd.io/_uploads/ByhElv60c.jpg)

    ![](https://hackmd.io/_uploads/SJBHewT05.jpg)

    **Processing Exceptions** – Tasks that have incurred an     error in the workflow and requires action by a user. 
    
    ![](https://hackmd.io/_uploads/rkrIeP6Cc.jpg)

    ![](https://hackmd.io/_uploads/rk0IewTCc.jpg)

5. **File Manager** is a user-friendly interface for users to manage content files without needing to gain access to direct storage (e.g. Amazon Web Services (AWS) S3 bucket).

    ![](https://hackmd.io/_uploads/S19PeDp0q.jpg)
    
    ![](https://hackmd.io/_uploads/HJXOgDT0c.jpg)

## Dashboard basics

The OMS Dashboard provides users an at-a-glance view of all orders and deliveries by Month. Users can view order and delivery performance, click into actionable items for orders in specific states, and download daily and weekly reports.

![](https://hackmd.io/_uploads/rySPvDaC5.jpg)

Upon initial login to the OMS, the Month filter dropdown will default on “All Months”. To change this to a specific month, click on the dropdown arrow and select the month you would like to view Dashboard data for.

![](https://hackmd.io/_uploads/S1ecDDTAc.jpg)

In the example below, the “March 2022” filter is selected. Note that counts will then shift and update in real-time. User is now viewing order statuses and deliveries for the March 2022 month:

![](https://hackmd.io/_uploads/Bkm9dw6Rc.jpg)


### Order Status Cards

The status card indicators at the top of the Dashboard allow users to view orders by the following statuses:

![](https://hackmd.io/_uploads/SJoJYD60c.jpg)

* **Awaiting Assets**: Orders requests that are awaiting assets 
* **Ready**: Orders ready for processing 
* **Processing**: Orders processing in progress 
* **Delivering**: Orders in a ready for delivery or delivering state 
* **Delivered**: Completed jobs 

To view all orders for a specific state, click on the associated status card. Note that all orders are derived and aggregated from BeBanjo statuses. Refer to the [BeBanjo developer documentation](https://developers.bebanjo.com/) for more information about third-party app integrations. 

### Open Jobs Status 

The **Open Jobs Status** provides users with a visualization of orders in the various states. Hovering over a state in the pie chart will display the percentage of orders in that state.

In this example, we hover over the **Awaiting Assets** state to view that 46.9% of jobs are missing asset components to be worked on.

![](https://hackmd.io/_uploads/SJxYjvpR9.jpg)

### On-Time Delivery 

The **On-Time Delivery** graph displays a comparison of deliveries over the past 6 months. 

In the example below, the comparison of on-time delivery is between the months of March to April 2022.

![](https://hackmd.io/_uploads/H1Fx2DTA9.jpg)

### Media Delivery 

The **Media Delivery** module is available when a Month is selected. It displays the percentage of the total media that has been delivered for the selected Month. It also displays the percentage delivered. 

In the example below, 13% of the media has been delivered so far, with 13% of the deliveries delivered on time for the month of June 2022.

![](https://hackmd.io/_uploads/H1sE3PaC5.jpg)

# Rightsline Onboarding

> Note: The following steps of Rightsline Onboarding require access to the LADB Rightsline platform. Refer to your release manager regarding access and securing roles/permissions to the LADB Rightsline platform. 

The OMS is integrated with Rightsline in managing Inventory titles and title hierarchies. Refer to the [Rightsline documentation](https://rightsline.zendesk.com/hc/en-us/articles/4418208476955-New-to-Rightsline-) for more information about using Rightsline as a first-time user.

For title hierarchy management, LADB users have the ability to create using the Rightsline platform:

* new entities, whether they are a company or a human, as **Contacts**, and;
* new titles and title hierarchies (e.g. version, series, episode) as **Catalog** items. 

Refer to the following Help Center article for more information: [Contacts and Catalogs](https://rightsline.zendesk.com/hc/en-us/articles/4416560697499-Modules)

## Logging in

1. After securing access and user permissions from your release manager, go to [https://app.rightsline.com/](https://app.rightsline.com/). 
2. Type in your user credentials (email address and password). 
3. You will be prompted to the Rightsline dashboard. The main menu is located on the left side.

**My Recent Activity** provides quick links to any newly created items. 

![](https://hackmd.io/_uploads/r1I86w6R9.png)

## Create a new studio or brand

> **Note**: Creating a studio or brand contact in Rightsline is a way of capturing entities in order to provide more context in creating a title. The difference between these two contacts will be made clearer later when you create a title. 

To create a new studio or brand: 

1. On the Rightsline platform, click **Contacts**. 

    ![](https://hackmd.io/_uploads/HJQpTP6Aq.png)

2. Click the green plus sign located on the upper right side of the platform, then select the contact type.

    ![](https://hackmd.io/_uploads/SJm7Av6Rc.png)

* Select **Studio** when creating a studio or brand entity. 
* Select **Talent** when creating a human entity (e.g. actor, designer, editor). 
* Select **User** when creating a third-party user entity outside of a studio or brand. 
* **Person** is a default contact type and is not used in any Rightsline-OMS operations. 

3. Provide the required and applicable fields for the selected entity.

    ![](https://hackmd.io/_uploads/S1Y_RwaC9.png)

> **Note**: If you are creating a new Contact for the very first time and do not have the rest of the Studio or Brand details, you can simply provide the name of the Contact and come back to the saved Contact to edit and fill in the rest of the details later.

4. Click **Create**. 

The new Contact is saved in the database, and is assigned a dedicated ID.

![](https://hackmd.io/_uploads/BJqbyua05.png)

## Create a new title

To create a new title: 

1. From the side navigation bar, click **Catalog**. 

    ![](https://hackmd.io/_uploads/Bk9wJupR5.png)

2. Click the green plus sign located on the upper right side of the platform and select the **Catalog** type. 

    ![](https://hackmd.io/_uploads/S1aMeua09.png)

> **Note**: The hierarchy of video content are, from top to bottom: 
> * Series, Season 
> * Feature, Episode, Sizzle Reel 
> * Version 

3. On **Create a New Record**, provide the required fields. In the example below, we selected `International Trailer` and `Looney Toons Back in Action` in the required fields for a Feature. 

    ![](https://hackmd.io/_uploads/r11eZOT09.png) 

4. Some Catalog Items require an **Associate Contacts to the New Record**. Provide the **Studio** and **Brand** fields by typing the name or clicking the plus sign on the right to select from existing contacts, and then click **Apply**.

    ![](https://hackmd.io/_uploads/HJAufOpRc.png)
    
    ![](https://hackmd.io/_uploads/H1g5GOTA9.png)

    > **Note**: This action is only applicable to higher hierarchical Title items only (Series and Season). For lower hierarchical Title items, you need to associate a Licensor from the list of Contacts to complete the Title creation process. 

5. Click **Continue** to auto-create Child Items. 

> **Note**: If you do not or fail to create a brand for higher hierarchical items, a brand is auto-created of the same name. 

6. Create Hierarchical Catalog Items of the Title and then click **Done**.

This step will be different depending on the selected higher hierarchical item. 

For example, this is the hierarchical catalog items for a Feature or a Sizzle Reel: 

![](https://hackmd.io/_uploads/rkrM7daR5.png)

7. Click **Done** to save and create the new title.

# Supply Chain Fundamentals

OMS is integrated with SDVI Rally (which serves as a backend orchestration tool) to allow users to run or configure presets on SDVI Rally and build or customize workflows according to their media delivery requirements, and Rightsline . Below is a depiction of the hierarchical relationship between the two systems.

## The SDVI to OMS supply chain hierarchy

OMS is integrated with SDVI Rally (which serves as a backend orchestration tool) to allow users to run or configure presets on SDVI Rally and build or customize workflows according to their media delivery requirements, and Rightsline . Below is a depiction of the hierarchical relationship between the two systems.

![](https://hackmd.io/_uploads/Sk7k_Cr29.jpg)

* **Preset** - An SDVI recipe for cloud-based media processing like edit, transcode, qc (Quality Control), and outbound delivery
* **Rule** - Connects and sequences Presets into "Supply Chains"
* **Workflow** - Connects OMS to SDVI Presets and Rules. It can be a single step or an entire Supply Chain
* **Customer Profile** - Allows a workflow to be associated to a specific customer's deliverable requirements
* **Order** - This enables users to request (and to some extent, customize) deliverables amd asspciates them into a Title
* **Job** - An Order is compromised of one or many Jobs, which are end-to-end steps required to fulfill these deliverables
* **Task** - A job can be a mix of machine-driven (SDVI) and user-driven actions, bifurcating or splits the flow where applicable for human interaction

Refer to the following docs about our third-party app integrations: [SDVI Rally Help Center](https://sdvi.zendesk.com/hc/en-us) 

## Sequence Diagram

To create or update a workflow, refer to the following sequence diagram: 

![](https://hackmd.io/_uploads/BJUR7uTRc.jpg)

1. Build a preset in SDVI.
    * Configure an existing preset; or 
    * Clone and configure a new preset 
2. Build an OMS workflow in codebase 
3. Create an OMS Customer Profile 
4. Create an OMS order 

### Edit an existing SDVI preset 

>**Note**: The following steps of the QuickStart guide require access to the SDVI Rally app. To access the SDVI Rally app, open the LADB Okta platform on another browser tab and click the SDVI Rally app on the Okta apps list. 

LADB users may use or clone the pre-existing presets to build a workflow. Refer to Introduction to Rules and Presets for more information or watch this video. 

To find and access presets in SDVI: 

1. Click SDVI from the LADB Okta apps list. 

2. On the left navigation menu, select **Supply Chain > Presets**. 
    
    ![](https://hackmd.io/_uploads/Sk2SBdaAq.jpg)

3. On the search bar, enter a keyword of the preset you are looking for.

    For example, the following presets are available when you enter the keyword `delivery` shows the available presets for configuration and/or cloning:

    ![](https://hackmd.io/_uploads/BJRqSu6Rc.jpg)

    >**Note**: Click the “?” icon beside the Provider Type of a selected preset to open SDVI documentation about configuring a selected preset in a new browser tab. 
    >![](https://hackmd.io/_uploads/rJYRHupRc.jpg)

4. Click a preset to pop out the Preset menu on the right, then **Open Preset Editor**. This opens the preset script in a WYSIWYG editor.

    ![](https://hackmd.io/_uploads/HyAGWKaCc.jpg)

    ![](https://hackmd.io/_uploads/H1y_LuTRc.jpg)

    The **Preset Editor** has a very basic code check and lets you know if things are not indented or formatted properly.

    ![](https://hackmd.io/_uploads/B1GcUOa09.jpg)
 
6. To edit the **Rally Config** portion of the selected preset, click the **Rally Config** tab (or scroll down) and then the Editor canvas.

    ![](https://hackmd.io/_uploads/rklCLd6Ac.jpg)

7. If you have committed edits/changes, click **Accept Changes** to save your changes or the **Undo** icon to reset your code changes. This action takes you back to the **Provider Preset** menu panel.

    ![](https://hackmd.io/_uploads/ryNMv_T09.jpg)

    ![](https://hackmd.io/_uploads/BymQwdpR5.jpg)

8. Click **Save** to save your changes. 

### Create a new preset (from an existing SDVI preset) 

To create a new preset from an existing SDVI preset: 

1. Follow Steps 1-5 of **Configure an existing preset in SDVI**.
2. Copy the code of the selected preset, and then go back to the main navigation interface. 
3. On the left navigation menu, select **Supply Chain > Presets**. 
4. Click the plus button on the bottom right.
    ![](https://hackmd.io/_uploads/r10J_up0q.jpg)
5. Provide the following details: 
    * **Preset name** - Make it descriptive and should follow your organization’s naming conventions 
    * **Provider Type** – refer to the [following API documentation](https://ladb-staging.sdvi.com/docs/preset/preset.html) for the preset provider types. 
    * **Tags**
    * **Preset file name** – include `.py` 
6. Click **Create** to save your new preset.
7. From the **Presets** list, select your newly created preset. 
8. Click **Open Preset Editor**.

    ![](https://hackmd.io/_uploads/BJcTFda09.jpg)

8. Paste the copied code to the WYSIWYG editor and update it to your configuration. 

    >**Note:** The editor has a very basic code check and lets you know if things are not indented or formatted properly. 

    >⚠️ BEST PRACTICE:<br>
    >As there are many providers and presets, always refer to the SDVI Presets documentation on how to update a specific preset including its applicable syntax. 

9. Click **Accept Changes > Save** to save your changes. 

### Build an OMS workflow using a dynamic preset template 

>**Note:** If you wish to build a new custom workflow, see Build an OMS workflow in codebase and associate to SDVI preset in Additional Workflows and Use Cases below. 

Follow these steps without going into the OMS codebase: 

1. On SDVI, navigate to **Supply Chain > Presets**. 
2. Find and click the preset labeled `OMS-DOC-Cstm-WorkflowStarter`.
3. Open **Preset Editor**. 
4. Copy the starter preset script in the WYSIWYG editor and in the Rally Config. The script also includes guidance on how to build an OMS workflow using the dynamic preset template as well. 

**WYSIWYG editor:**

```
from rally import files, supplyChain, asset, jobs, notifications 
import json 
 
def eval_main(context):
``` 

**Rally Config:** 

```
{ 

  "Eval2Package": "rsl://Scripts/oms_packages_v3.zip", 

  "OMS_CONFIG": { 

    "inputs": { 

      "example_instance_input": { 

        "note": "remove example_ to use" 

      }, 

      "example_template_input": { 

        "new_input": { 

          "label": "New Option", 

          "type": "string", 

          "values": [ 

            "Option 1", 

            "Option 2", 

            "Option 3", 

            "Option 4" 

          ] 

        }, 

        "qc_required": { 

          "default": false, 

          "label": "QC Required", 

          "type": "bool" 

        } 

      } 

    }, 

    "workflow": { 

      "job_object": "Screening" 

    } 

  }, 

  "PresetName": "OMS-NEWSCRN-Custom-Demo2" 

} 
```

5. Perform the same steps in **creating a new preset from an existing SDVI preset**. Your new preset should be: 
    * An SDVI Decision Engine preset type 
    * The name of the new match this pattern:  `OMS-*-Custom-*` where `<*>` can be one or more alphanumeric characters of your choice. 
6. Follow the steps [in this SDVI documentation](https://sdvi.zendesk.com/hc/en-us/articles/360022254914-Introduction-to-Rules-and-Presets) on how to create an SDVI rule. 
7. Go to the Preset editor and paste the starter preset template code you copied and the JSON as well. Configure the rest of your preset code. 

* You need to set the value of job_object to one of the 4 OMS template values: `Screening`, `Edit`, `Deliver`, or `Transcode` 
* If you want to prompt users of this flow for additional input, follow the example json: 
    * `template_input` - allows input for order level prompting 
    * `instance_input` - is at the job level 
8. Save your new preset. 
9. Go to **OMS > Customer Profiles > Create Profile**. 
10. Follow the steps in creating a new Customer Profile. Your new custom preset will be available on the drop-down. In the example below, the workflow `OMS-NewEdit-Custom-Test` already showing in the drop-down is built using a starter template preset. 

For more information on how to work on your workflow and presets, refer to the following SDVI Help Center documentation: [How to create your first supply chain](http://ttps://sdvi.zendesk.com/hc/en-us/articles/1500006745862-Use-Case-How-to-create-your-first-supply-chain-Media-centric-1-2-Decision-engine-).

# Create a Customer Profile 

> **Note**: Before you have any LADB user place an order on OMS, administrators need to configure or create the applicable customer profiles. This way, the customer profiles set up “templatize” the specs that the LADB users then place the order for so there is no need to configure this on later. 

OMS users can create a new Customer Profile that can trigger a workflow. The configuration on your customer profiles ties back to the presets set up by default or configured by an administrator in SDVI.

![](https://hackmd.io/_uploads/Hk7H5_p05.jpg)

To create a new Customer Profile: 

1. On the OMS, hover and click your mouse over to your account icon located on the top right corner and then select **Customer Profiles**. 

    ![](https://hackmd.io/_uploads/SyBu9dTC5.jpg)

    ![](https://hackmd.io/_uploads/BkBq9O6Rc.jpg)

2. The **Customer Profiles** interface will show a list of customer profiles. 

    ![](https://hackmd.io/_uploads/ryhaq_p09.jpg)

3. Click **+ New Profile**. 

    ![](https://hackmd.io/_uploads/B1Hei_a0c.jpg)

4. Provide the following details for your new Customer Profile: 
    ![](https://hackmd.io/_uploads/H1emoO60q.jpg)

* **Customer type:** Customer type from the drop down OR enter a new customer to add it as a new selectable record. 
* Customer **Profile Name** 
* **Workflow** 
    > **Note**: This field may be left blank for now if you are creating a new customer profile for the first time. See **Build an OMS workflow in codebase** for more information about creating or configuring the existing workflow. 

5. In the Components section: 
    * Select **Media resolution** from the drop down. 
    * Tick the checkbox if **Trailer** is required 
    * Select which **audio track language/s** to add from the drop down. 
        > **Notes**:<br> 
        > - You can add more than one audio track language. 
        > - You can rearrange the Audio Track Language configs by dragging + dropping in the order you prefer. 
    * Select which **subtitle track languages** to add from the drop down. 
        > **Notes**:<br>
        > * You can add more than one subtitle track language. 
        > * You can rearrange the Subtitle Track Language configs by dragging + dropping in the order you prefer. 
    * Select the audio configuration (**Audio config**) from the drop down. 
    * Select the output format from the drop down. 
        > Note: At the moment, OMS only supports MP4 and MOV. 
    * Select the **Output Frame Rate** from the drop down. 
    * Select the **Output Bit Rate** from the drop down. 
    * Select the **Output Resolution** from the drop down. 
6. In the Email notifications section: 
    * Select the email template from the drop down 
        > **Notes**:<br>
        > * This field may be left blank for now if you are creating a new customer profile for the first time. 
        > * Click **Preview Template** to generate a sample email notification based on the selected template. 
    * Email addresses to be sent to, from, and blind copy (BCC). 
7. Click **Save Profile** to save the new customer profile. 

# Manage Orders

Order Management allows OMS users to have the ability to view all orders at a high level.

![](https://hackmd.io/_uploads/S1h3kvT05.jpg)

The orders in Order Management each provide a high-level view of:

* Order description 
* Order ID 
* Purchase Order (PO) number 
* Billable customer 
* Order status and progress 
* Jobs associated under the order with links 

This interface also allows OMS users to enter orders manually.

## Order Queue

All orders track to the following status workflow tasks:

**Awaiting Assets**
All jobs within the Order are in Awaiting Submit state

**In Progress**
All jobs within the Order are in Prep for Edit, Edit, Render, Review, and QC states

**Needs Attention**
All jobs within the Order are in Review state
The job or jobs are in Review because the Task failed or has hit an error in the workflow (In Error state)

**Complete**
All jobs within the Order are in Complete state


## Place an Order 

Refer to the following sequence diagram for placing an order on OMS:

![](https://hackmd.io/_uploads/SklOgtpR9.jpg)

An Order is a grouping of Jobs. When a user places an Order, a Job (or Jobs) are then created as line items within that Order. Tasks will then be created (as needed) for specific Jobs based on the *type of profile selected at order creation*. 
 
1. Place a new order in OMS (**OMS Order**) 
1. This creates new Job/s (**OMS Jobs**). 
1. Jobs can have Tasks that can be programmatic or human-driven that are assignable (**OMS Tasks**) 

To place a new Order: 

1. On the platform, navigate to **Orders**, then click the **+New Order** located just below the menu bar. 

    ![](https://hackmd.io/_uploads/rk9YnOpR9.jpg)

2. On the **Order Details** page, select the customer first from the drop-down. 

    ![](https://hackmd.io/_uploads/r1wbGKTA5.jpg)

3. On the **Job Details** section, choose the Customer Profile for the selected customer. 

    ![](https://hackmd.io/_uploads/BJ3mzK6A9.jpg)

4. Provide the job details: 

    ![](https://hackmd.io/_uploads/HkCOfKa0q.jpg)

* Job due date 
* Job embargo date or date when job is not delivered (optional) 
* Media resolution 
* Audio track language 
> **Notes**:<br> 
> * You can add more than one audio track language. 
> * You can rearrange the Audio Track Language configs by dragging + dropping in the order you prefer. 
* Subtitle track language
> **Notes**:<br>
> * You can add more than one audio track language. 
> * You can rearrange the Audio Track Language configs by dragging + dropping in the order you prefer. 
* Audio config 
4. Click **Next** to select a Title. 
5. Enter the keyword in the **Title** search box and click **Feature** or **Series** to select the title.

    ![](https://hackmd.io/_uploads/BymTfYaRq.jpg)

    ![](https://hackmd.io/_uploads/Hyn6MF6Ac.jpg)

    > **Note:** Depending on your user role and/or permission types, some titles or title hierarchical items may not be available. See **Roles and Permissions** for more information. 

6. Select and click the version you wish to move to the **Selected Titles** area. 

    ![](https://hackmd.io/_uploads/Sk8bmFpRc.jpg)

    ![](https://hackmd.io/_uploads/Hy0bQFTR9.jpg)

    Repeat if you intend to add multiple titles. Doing so will automatically create a new job without going back to the **Job Details** interface.

    ![](https://hackmd.io/_uploads/ByXEQYpAq.jpg)

7. Click **Next** to review your new Order. 

8. If all order details are correct, click **Submit**. Otherwise, click **Back** to update your order details. 

You may check your newly placed Order on the Orders list. Your new Order should be in **In progress** status.

![](https://hackmd.io/_uploads/Bk6ImtTCq.jpg)

If you need to review your order, simply click on the drop-down arrow on the left.

![](https://hackmd.io/_uploads/B1IFQY60c.jpg)

## Search orders using filters 

To refine your Order search, click **Status: All** located on the upper left of the interface and select the order status. 

![](https://hackmd.io/_uploads/H1QpUY6R9.png)

You can also use the **Toggle Columns** feature to customize the Orders display according to Order field items. 

![](https://hackmd.io/_uploads/HkVeDK6A9.png)

## Edit an existing Order 

Authorized users can only update the **Job Description**, **PO number**, and **Managed by** details. 

To edit an existing Order: 

1. On **Dashboard > Orders**, locate the Order you wish to edit. 
2. Navigate your cursor to the far right of the Order row, click the 3-dot icon and then **Edit Order Details** as shown below: 

    ![](https://hackmd.io/_uploads/HyV0QtaA9.jpg)

    ![](https://hackmd.io/_uploads/BJulNKa09.jpg)

3. Update the editable fields (**Description**, **PO #**, and/or **Managed By**), then click **🗸** to save changes or **X** to cancel action. 

# Manage Jobs

Jobs Management provides users with a high-level view of all jobs with or without Order grouping.

## Job Queue 

All jobs track to the following statuses:

![](https://hackmd.io/_uploads/SyGowFTRc.jpg)

![](https://hackmd.io/_uploads/HkP2vtTA5.jpg)

* **Submitted** – Job is submitted through the workflow. 
* **Awaiting assets** – Job is awaiting media assets. Once assets are found, job will be moved to the next state. 
* **Prep for review** – Assets are received and registered and are ready for review 
* **Prep for edit** – Assets are received and are prepped for edit. 
* **Edit** – Assets are actively being worked on (in editing). 
* **In review** – The task in the job failed due to workflow error. 
* **Render** – Assets are actively being worked on (rendering). 
* **QC** – Assets are in video Quality Control (QC) checks/tests. 
* **Completed** – All tasks in this job are successfully completed. 

## Search jobs using filters 

To refine your job type search, click **Stage: All** or **Status: All** and select the job status or job state. 

![](https://hackmd.io/_uploads/B1Sf_K6Aq.jpg)

![](https://hackmd.io/_uploads/S11XOFpAc.jpg)

To save your job search filters, click **Save Search** and name your search filter. 

![](https://hackmd.io/_uploads/SJCHdKTA5.jpg)

![](https://hackmd.io/_uploads/r1DL_YaRc.jpg)

The saved search filter will appear in the **Saved Searches** drop down as shown below: 

![](https://hackmd.io/_uploads/S1eYuK6R5.jpg)

To export a job report using with or without job search filters, click the download icon just beside the Search icon. 

![](https://hackmd.io/_uploads/H1bsuKpC5.jpg)

# Manage Tasks

**Task Management** allows OMS users to manage operational workflows that require human intervention or action. OMS users can assign or self-assign tasks in the workflow that relates to missing assets, compliance screening, processing exceptions that require next steps, and manual delivery tasks. 

To navigate to the Task Management queue, click on **Task Management** in the navigation bar. From there, you can navigate to the specific task queues that you need to complete in order to move the order (and associated jobs in it) to completion: 

1. **Pending Assets** 
2. **Edit Tasks** 
3. **Review Tasks** 
4. **Processing Exemptions** 

## View Task details

A Task has the following fields to provide OMS users context on how to move the task along to complete the job: 

![](https://hackmd.io/_uploads/S1eeqtaC5.jpg)

* **Task ID**: auto-populated and assigned upon creation 
* **Due Date**
* **Age**: How old is the task at current status 
* **Title Name** 
* **Asset Name includes**: 
    * The name of the asset that needs to be fulfilled. 
    * Expected resolution of asset file 
    * The path where the asset file needs to be placed 
* **Languages** 
* **Status**: Refer to task queue on the different statuses 
* **Assignee**: Human-assignable (see *Assign a Task*) 
* **Notes**: See **Add a task note** 

## Task Queue 

The Task Queue enables users to assign workflow tasks for all missing assets that are awaiting scheduling. All assets displayed include their respective Distributor, associated Title, Aging status, and Due Date: 

### Pending Assets

* **Research** - Source asset/s requested are being looked up in database
* **Awaiting Media Prep** - Requested source assets awaiting to be prepped
* **Awaiting Ingest** - Requested source assets awaiting to be ingested
* **In Media Prep** - Requested source assets currently being prepped
* **Needs Acquisition** - Source asset/s needs to be in acquisition
* **Ordered** - Source asset/s ordered
* **QC** - Asset/s in QC
* **Edit** - Asset/s currently being edited
* **Not available** - Requested asset/s are not available in database
* **Incoming** - Assets ready for further processing

### Edit Tasks and Review Tasks

* **Created** – Task is newly created in an Order. 
* **Ready** – Task is ready to be picked up and worked on; awaiting assignee. 
* **Accepted** – Task is assigned (or self-assigned) to an OMS user. 
* **Awaiting input** – Task is awaiting instructions. Once instructions are found, task will be moved to the next state. 
* **Awaiting assets** – Task is awaiting media assets in order for it to be worked on. Once assets are found, task will be moved to the next state. 
* **Prep for review** – The linked job in the task is in QC state. 
* **In progress** – Task is actively being worked on in progress. 
* **In error** – Job assigned in task has hit an error in workflow. 
* **Failed** – Task is moved to this state when error is not resolved within delivery date or if task is not completed. 
* **Completed** - Task is successfully completed. If there are any associated tasks, they have been completed as well. 

### Processing Exceptions
For **Processing exceptions**, some or all of the tasks under this processing state have related jobs in **In Review** state.

![](https://hackmd.io/_uploads/BkRuhYTR9.jpg)

![](https://hackmd.io/_uploads/B1r3htaA9.jpg)

Authorized users would need to access the source asset in SDVI Rally to determine and fix any requirement or workflow issues that causes **Task Failed** (i.e. ingesting fail, ingest validation fail).

## Assign a Task 

To pick up a task and assign it to yourself: 

1. Hover the **Unassigned** field near the end of a selected task until the word **Assign** appears, and click on it.

    ![](https://hackmd.io/_uploads/SJ2JpK609.jpg)
    
    ![](https://hackmd.io/_uploads/SkImpFpR5.jpg)
    
    ![](https://hackmd.io/_uploads/S1e46Yp09.jpg)

2. Type your name or another OMS user, or click the drop-down and select the OMS user to be assigned to the task. 

    ![](https://hackmd.io/_uploads/S1eLTFp0q.jpg)

3. Your change will automatically be saved and will be displayed along the task row.

    ![](https://hackmd.io/_uploads/HygK6taCc.jpg)
    
    ![](https://hackmd.io/_uploads/Skqt6tTAc.jpg)

To better understand each state of **Task Management**, let’s review each task queue. 

## 

## Pending Assets

**Pending Assets** occur when an Order placed is **Awaiting Assets** for transcode. A user needs to go to the **Pending Assets** task queue to determine which assets need to be manually ingested or uploaded to the correct storage bucket/database in order for them to be made available for the next processing state. 

You can find tasks that are **Pending Assets** by navigating on the main menu to **Task Management > Pending Assets** as shown below: 

![](https://hackmd.io/_uploads/SkNxxvp05.jpg)

![](https://hackmd.io/_uploads/ByRelD605.jpg)

To better understand this processing state, a task in **Pending Assets** requires the following actions to be completed (highlighted in yellow) in order to move the task to the next applicable processing state: 

1. Assign user. 
2. Change status from **Awaiting Assets** to **Research**. 
3. Check if source asset is available or not. 
    * If not, upload the asset file first, then change status to **Awaiting Ingest**. 
5. Ingest source asset using SDVI Rally and change OMS status to **Awaiting Ingest**. 
6. After ingest, change status from **Awaiting Ingest** to the next applicable status. 
    > **Note**: If the source asset is not available (i.e. not in database, or needs to be acquired first or ordered, or if asset order is incoming but not yet in the storage server), change to the applicable state, and update it as soon as the source asset is available and is ingested. 

The following are steps in moving a task in **Pending Assets** to the next applicable status using a use case. 

### Assign user for a task in Pending Assets state 

1. On the OMS navigation bar, go to **Task Management > Pending Assets**. Select a task with an **Awaiting Assets** status and the asset request in **Waiting**.
2. Assign a user first. 
3. The task is then moved to the **Research** status so that the assignee starts to check whether the asset is in the Titles database or not.
    This step also creates a “shell record” in SDVI Rally  for the assignee to fulfill it against. 
    If the asset is not in the Titles database, the assignee needs to ingest the asset.
    > **Note**: At the moment, ingest is not available in the OMS. You need to ingest requsted assets in an Order via SDVI Rally. 

### Ingest asset in SDVI Rally 

1. Log into SDVI with your user credentials or via the LADB Okta apps dashboard. 
2. On the side navigation menu, click **Infrastructure > Storage Files**, and the correct file folder.
 
    ![](https://hackmd.io/_uploads/Sy7VycTCc.png)
3. Click the Upload icon to start uploading the asset file requested in the Order.

    ![](https://hackmd.io/_uploads/SJ0t1qaA5.png)

    > **Note**: Make sure that the name of the asset to be ingested has the same naming convention in the requested Order. 

4. Once you have confirmed that the asset has been uploaded successfully in the right folder, go back to OMS and change the status from **Awaiting Assets** to **Awaiting Ingest**. A green checkmark is placed under the Source column. 

    SDVI Rally then fulfills the uploaded asset against the order.

5. Once it gets fulfilled, the task under **Pending Assets** falls off the list, and gets moved to the next state. 
    
    In this use case, the task is then moved to a processing state, which is **Prep for Review**. 

## Review Tasks 

>**Note**: The following requires access to the LADB Rally Portal. Please refer to the release manager regarding your access to the LADB Rally Portal. 

**Review Tasks** list tasks that require video QC screening before it can be edited or delivered. 

![](https://hackmd.io/_uploads/rJMQlvTR5.jpg)

A task tagged for review (**Review Task**) have the same fields in Pending Assets, with the addition of the following to help OMS users move the task along for job completion:

![](https://hackmd.io/_uploads/BJ-VjFTCc.jpg)
* **Review Type**: Show which Review stage is the task currently at.
*  **Related Job** – Job ID, which is a clickable link to the detailed version of the Job.
* **Reviewing** – A clickable icon that directs authorized users to the Asset in [Accurate.Video](https://accurate.video/) editor view. 

To review a task, it requires access and steps to perform in both OMS and a custom LADB Rally Portal. The SDVI Rally Portal (“LADB Portal”) is configured to provide LADB users capabilities to upload and screen assets for media fulfillment. 

To review a task in **Review Tasks**: 

1. On the **Review Tasks** interface, click the Job ID. 

    ![](https://hackmd.io/_uploads/rJgk5WNki.jpg)
    
    Step 1 opens the related job in full detail:
    
    ![](https://hackmd.io/_uploads/BJ-E5WE1j.jpg)
    
    * Title, including release date, and playable video if available (See **Rightsline Onboarding** for more information) 
    * Job timeline 
    * Asset information, including related files 
    * Order deliverables 
2. On the Job timeline, check the **In Review** or **QC** state and determine whether you need to assign you or someone else to screen the Title. The following are indicators where the task is at: 
    * **Task Waiting** – means there is a screening task awaiting action (assign yourself or another authorized user to perform the screening). Clicking Task Waiting will redirect you to the **Screening Tasks > Unassigned Tasks** interface of the SDVI Rally Portal (https://ladb-staging.sdvi.com/gateway/ladb-portal/screening-tasks). 
        > **Note**: You can also access **Screening Tasks > Unassigned Tasks** without needing to switch OMS interfaces by clicking on the quick link under Reviewing along the asset row in Review Tasks as shown below. <br>
        > ![](https://hackmd.io/_uploads/B1BF5ZVko.jpg) 
    * **View task** – means the task is currently assigned to a user or is undergoing screening by an authorized user. 
    * **Task error** – means that the task failed due to a workflow error. Refer to **Edit an existing Preset** for additional help on how to resolve task error. 

    Refer to **Perform QC in Rally Accurate Player** for more information/next steps on how to review tasks per use case. 

3. The task is complete and the workflow auto-runs the rest of the sequential steps towards completion of the Order. 

## Edit Tasks 

**Edit Tasks** lists tasks that require editing of a master source asset in Adobe Premiere. 

![](https://hackmd.io/_uploads/ByhElv60c.jpg)

A task tagged for editing (**Edit Task**) have the same fields in Pending Assets and For Review, with the addition of the following fields to help OMS users move the task along for job completion:

* **Edit Session**
* **Editing** - A clickable icon that directs authorized users to the Asset in [Accurate.Video](https://accurate.video/) editor view.

## Processing Exceptions

To access the **Processing Exceptions** queue, click on the Task Management dropdown and then select **Processing Exceptions**:

![](https://hackmd.io/_uploads/BJ6Bob4Ji.jpg)

The **Processing Exceptions** queue will now be displayed:

![](https://hackmd.io/_uploads/HkBqjbVkj.jpg)

# File Manager

The **File Manager** enables users to browse LADB’s storage locations, view files, and perform transfers between locations. 
 
To navigate to the File Manager, click on the **File Manager** in the nav: 

![](https://hackmd.io/_uploads/S16fGcpC9.jpg)

The Amazon S3 Prod location will now be displayed as default: 

![](https://hackmd.io/_uploads/rJsQGc6Cq.jpg)

## Browse and Navigate File Manager 

OMS Users can find the file they would like to copy or move just like they would in a file library.

In the following example, we select `Jamelle Test 1/Test folder/testing test folder too/` to access 3 media files. As we click into additional sub-folders, the path is displayed and updated at the top of the module.

![](https://hackmd.io/_uploads/BkyLzqT0c.jpg)

Click on any of the folder paths to navigate to your preferred folder. 

![](https://hackmd.io/_uploads/BJavGqp0c.jpg)

The deeper the sub-folders, the folder path gets shortened to `…/`. Click it to access and navigate to a previous folder path. 

![](https://hackmd.io/_uploads/S13tGc6Rq.jpg)

## Create a folder within a location 

To create a new folder within a location: 

1. Click on the new folder icon. 

    ![](https://hackmd.io/_uploads/HkJRf9aA9.jpg)

    ![](https://hackmd.io/_uploads/rJRRMq605.jpg)

2. A text field appears for the user to enter the name of the new folder. Enter the name of the folder, then hit enter to create the new folder in the selected destination folder: 

    ![](https://hackmd.io/_uploads/rkxGmc605.jpg)

    ![](https://hackmd.io/_uploads/BkiMXcaAc.jpg)

3. The new folder now appears in the selected destination folder. 

    ![](https://hackmd.io/_uploads/r1OrQ5aA9.jpg)

    > **Note**: If the newly created folder is not showing up, click the Refresh button to refresh the file explorer.
    > ![](https://hackmd.io/_uploads/HkbdXqTRc.jpg)

## Transfer files

To transfer a file or a set of files using the **File Queue**: 

![](https://hackmd.io/_uploads/Hk1cQ9aRc.jpg)

1. Select the file/s to be copied. Once selected, the File Queue automatically “copies” the selected file/s and indicates how many files are “copied”. 

    ![](https://hackmd.io/_uploads/Byhimq6Rq.jpg)

2. Navigate to the destination folder and click the **Copy to folder** icon. 

    ![](https://hackmd.io/_uploads/SJrA7960c.jpg)

3. The selected file/s are now copied to the destination folder. You may click the **Refresh** icon to refresh the file explorer and expedite the transfer. 

    ![](https://hackmd.io/_uploads/HJ4Z45aC9.jpg)
    
    ![](https://hackmd.io/_uploads/rJvGEcTA5.jpg)

    The file row on the right displays the file size information and actions **Add to File Queue** and **View MediaInfo**. 

OMS users may also transfer files using **File Queue** and the **Move to folder** button, which is located along the File Queue row. 

![](https://hackmd.io/_uploads/r1wUN5pA9.jpg)

To remove the file from the **File Queue** clipboard, either: 

1. Click **File Queue** and either select **X** next to the file or **CLEAR ALL** remove all selected file/s: 

    ![](https://hackmd.io/_uploads/rJBF4c60c.jpg)

    ![](https://hackmd.io/_uploads/S1aKVqaC9.jpg)

2. Select the **Remove from File Queue** icon on the file: 
 
    ![](https://hackmd.io/_uploads/r1-245pA5.jpg)

## Check file transfer status 

To view the status of a file/s: 

1. Click the **Transfer Queue** button to view all file transfers and their current statuses. If the file has successfully completed the transfer, it will then be displayed in the new location. 

    ![](https://hackmd.io/_uploads/Hy1kr5pCq.jpg)

    ![](https://hackmd.io/_uploads/HkDkH5TRq.jpg)

2. The **Transfer Queue** panel pops up to the side, displaying all file transfers and their current statuses. If the file has successfully completed the transfer, it will then be displayed in the new location. 

    ![](https://hackmd.io/_uploads/Sk4mr5a0c.jpg)

    The Transfer Queue has the following columns: 

    * **Action**: displays the type of transfer, **Copy** or **Move**
    * **Filename**: displays the name of the file that was transferred 
    * **Source**: displays the root source storage location 
    * **Destination**: displays the root destination storage location 
    * **Status**: displays the status of the file, 
    * **Progress**: displays the transfer progress with the following indicators 
        * ![](https://hackmd.io/_uploads/S1aurcTAc.jpg)indicates in progress with percentage complete 
        * ![](https://hackmd.io/_uploads/HyucH5p0c.jpg)indicates a successful transfer 
        * ![](https://hackmd.io/_uploads/Skqir5p0q.jpg)indicates a failed transfer 

## View source and destination folder paths 

To view the source and destination folder paths of your transfer: 

1. Find the row displaying your transfer and click the drop-down to expand:

    ![](https://hackmd.io/_uploads/Hy2pBqaCq.jpg)

2. The source folder path and the destination folder path are then displayed.

    Click on the link icons to open the source folder path or the destination folder path in another browser tab in the File Manager. 

    ![](https://hackmd.io/_uploads/SJJgLqpCc.jpg)

3. To view an updated list of file transfers, click the refresh button to update the **Transfer Queue** page. 

    ![](https://hackmd.io/_uploads/BJbfU56Cq.jpg)
    
    ![](https://hackmd.io/_uploads/rkm885TA9.jpg)

4. You may toggle the **Transfer Queue** columns by clicking **Toggle Columns**. 

    ![](https://hackmd.io/_uploads/Hk55UqpRq.jpg)
    
    ![](https://hackmd.io/_uploads/HJSCIcaCc.jpg)

    Click which column items to hide or appear in **Transfer Queue**, or you can select **Reset to Defaults** to view the file transfer queue in default mode. 

    ![](https://hackmd.io/_uploads/Bki7P9a05.jpg)
 
5. You may also view the file transfers via their transfer status. 

    ![](https://hackmd.io/_uploads/Sk1LvcTC9.jpg)

## View media info 

To view a file’s media info: 

1. On the selected file row, click on the **MediaInfo** icon. 

    ![](https://hackmd.io/_uploads/SkKODcp0c.jpg)

2. A modal appears, which will contain info about the media file. In this example, the media file is unavailable. 

    ![](https://hackmd.io/_uploads/ByPcP5TC9.jpg)

3. In another example, if the **MediaInfo** has not been previously requested, the following modal will display indicating that it a message stating that it has been requested:

    ![](https://hackmd.io/_uploads/ry_2w5TR9.jpg)

    > **Note**: The request for MediaInfo typically takes less than 5 minutes to generate. 

    Click **Refresh** to display the file’s MediaInfo or if you’ve closed the modal, then click the **MediaInfo** icon on the row again:

    ![](https://hackmd.io/_uploads/SJk1Oc6Rc.jpg)

# Additional Workflows & Use Cases

## Perform QC in Rally Accurate Player 

Media QC, or Media Quality Control, is the process of verifying that a media file is “fit for purpose,” meaning it meets the required standards and specifications for how that media will ultimately be used. 

Refer to this Help Center article for more information about the [Rally Access QC Workflow](https://sdvi.zendesk.com/hc/en-us/articles/360043426933-Rally-Access-Panel-QC-Workflow) and how to perform QC. 

The following use cases may provide context on how to set up your OMS to your configurations. 

### Configure SDVI Presets (in-depth) 

**Use case 1: Configuring Delivery preset**

When updating a delivery per client, user needs to define the destination is going and the Customer Profile has that information at the time of the order creation.

For example, the `DLVR-03-Deliver` preset is a delivery bucket setup.

![](https://hackmd.io/_uploads/rkxD2WEks.jpg)

If the preset is set up for different clients, you need to make `storage` and `name` parameters and add that information to your Customer Profile. 

![](https://hackmd.io/_uploads/rJ8cnbE1s.jpg)

This means that two things should happen when you modify a delivery per client: 

* Define the destination is going; and 
* Make sure that the Customer Profile has that information at the time of order creation to allow the orders to go through.

User can use the preset and then modify it, or update the `storage` and `name` parameters. And then based on the flow of this job, data can be sent to this from other steps to make sure that user reuses this one preset and make sure that all the data is dynamic, so the user is not creating new presets, you're just sending different payloads to it. 

Refer to the following configuration documentation for more information: [SDVI Mover](https://ladb-staging.sdvi.com/docs/preset/sdviMoverHelp.html) 

## Build an OMS workflow in codebase with a new transcode state (in-depth) 

> **Note**: The following requires access to the codebase. Please refer to the release manager regarding your access to the LADB OMS codebase. 

OMS Workflows (also written in Python, same as SDVI presets) are what enable OMS users to prompt the SDVI supply chain. Placing an order calls on a Profile that references a Workflow that interacts with the SDVI orchestration and media processing tools. Refer back to the SDVI to OMS hierarchy as needed. 

OMS has pre-existing Workflows in place for LADB users to use.

You can modify an existing Workflow to pivot on data instead of creating a completely new workflow (which you may do according to your organization’s configurations in the LADB OMS codebase). 

>⚠️ **BEST PRACTICE**: Referencing an existing OMS Workflow within an SDVI preset vs. cloning the backend python Workflow to configure a brand new one are both technically valid. Ideally, containing the number of SDVI Presets and OMS Workflows to a manageable amount is considered best practice. Choosing to simply modify and/or pivot off the current library may be a better approach. 

Reasons why an organization may need to modify and/or create an entirely new workflow: 

* New SDVI processing parameters require new input variables in an OMS workflow 
* Combine or separate multiple processing steps (i.e. Proxy + Transcode + Deliver) 
* Workflow needs a unique name/reference during OMS Customer Profile creation 
* A new provider tool is added to the SDVI supply chain 

There are some selectable options that dynamically modify your OMS job requests during Order Placement such as Resolution, Container, Audio Tracks, Subtitle Language, etc. So there is some flexibility when using existing Profiles/Workflows. 

Should you decide to clone and build an entirely new workflow, you need to have access to the source code repository and follow the steps: 

> **Note**: The steps above are code-intensive and may require you to work back and forth. 

**Step 1:** Add and customize new transcode workflow in `workflows.py` file.

1. On your code repository, locate and open workflows.py to any code editor (e.g. Sublime Text Editor or Visual Studio Code). 

2. On the workflows.py file, copy a workflow template script, and scroll down at the end to paste the script. You will reuse this script to create a new workflow. 

3. On the workflow template script, update the name and ident values with your new preset name. In the example below, the name and ident values are changed to `RIZZA-01-Start-Screening`, which is a new preset. 

    ![](https://hackmd.io/_uploads/BkMs_9p09.jpg)

4. Update the `instance_input_class` and `template_input_class` values. If we use the workflow template script in the previous number, the `instance_input_class` and `template_input_class` can be updated to, say, `RizzaWorkflowInstanceInputs` and `RizzaWorkflowTemplateInputs`, which will be our new instance and template input classes for our use case. 

    ![](https://hackmd.io/_uploads/r1avT-41s.jpg)

5. Update `job_class` value to any of the existing job templates. If none of the existing job templates are to your configuration, you may create a new job model and enter this value instead. Refer to the [following Python documentation](https://docs.python.org/3/reference/datamodel.html) about data models. 

    For our use case, we will use we will name our new job model `RizzaScreeningOrderJob` as shown below. 
    
    ![](https://hackmd.io/_uploads/S1Dh6WVyi.jpg)

    Because we are creating a new model, we will need to update the `models.py` file. 

**Step 2: Add and customize transcode model in `models.py` file.** 

6. From your code repository, open `models.py`, scroll down to the end, and copy-paste a model script to create a new job model. In the example below, we have added our new job model `RizzaScreeningOrderJob`. 

    ![](https://hackmd.io/_uploads/BJNEKcpA9.jpg)

7. Update the following components: 
    * `OrderJob` class (e.g.`RizzaScreeningOrderJob`) ![](https://hackmd.io/_uploads/HkASAW4Js.jpg)
    * Job Manager (e.g. `RizzaScreeningOrderJobManager`) and `job_type` (e.g.`rizza_screening`) ![](https://hackmd.io/_uploads/S1dICWEkj.jpg) <br><br> ![](https://hackmd.io/_uploads/BkRLCbNyo.jpg) <br><br> and `job_type` (rizza_screening) ![](https://hackmd.io/_uploads/HkyvJMNJs.jpg)
    * The Order Job timeline steps. For our use case, we need to define the classes ![](https://hackmd.io/_uploads/S1wcyGV1i.jpg) <br> and add the new statuses for the additional transcode step. ![](https://hackmd.io/_uploads/HyfgxMEJj.jpg)
    * Don’t forget to add the new Order Job timeline steps in `orders.constants`. ![](https://hackmd.io/_uploads/HybmgMNki.jpg)

**Step 3: Add and customize transcode proxy model in `proxy.py` file.**

8. Add `job_type` to proxy model (`OrderJob.JobMeta`). This allows you to define a different type of record but still uses one database to storage. 
    ![](https://hackmd.io/_uploads/BkAAK5pC9.jpg)

9. Update all applicable components: 

    ![](https://hackmd.io/_uploads/r19dlMNJi.jpg)

    ![](https://hackmd.io/_uploads/r1FKxGEJj.jpg)
    

**Step 3: Add the new workflow to the Workflows list in the `workflows.py` file.**

10. Go back to the `workflows.py` file and add `RizzaScreeningWorkflow` created in Step 1 to the WORKFLOWS object. The WORKFLOWS object is basically tied to the Customer Profile creation in OMS (when you select a workflow).

    ![](https://hackmd.io/_uploads/rycRxMEJj.jpg)

**Step 4: Update transitions in `models.py`.** 

11. On `models.py`, scroll down and define which tasks are going to be run against it. For our use case, `task.ScreeningTranscodeTask` is added before the **Awaiting Assets** and **Prep for Review** tasks.

    ![](https://hackmd.io/_uploads/r1W7-MVJo.jpg)

    ![](https://hackmd.io/_uploads/HJUQbME1i.jpg)

**Step 5: Create a new job order type file from the Jobs folder and update configurations.**

12. Create job order type in the Jobs folder (`rizza_screening_job.py`) and update all classes, variables and logic changes if applicable. The job order classes should also follow your transitions.

    ![](https://hackmd.io/_uploads/B1Kwbz4Ji.jpg)

**Step 6: Run a build job.** 

13. Before running a build job, check workflows, models, proxy, and job files are all good. 

14. Check SDVI to see if assets exist.

    ![](https://hackmd.io/_uploads/ryg6WfNJi.jpg)

    ![](https://hackmd.io/_uploads/BkNT-GV1i.jpg)

    If asset is not available, create a file label (script is already in the code repo) to be deposited in S3 or preferred storage for future: 
    
    ![](https://hackmd.io/_uploads/rJZVGGV1o.jpg)

**Step 7: Save all files.** 

The new workflow should then appear as an option when creating or updating a Customer Profile. 

![](https://hackmd.io/_uploads/HydUGzVJo.jpg)

**Step 8: Configure the workflow script in the notifications preset.** 

15. Go to **Notification Presets > OMS_Order_Submit**. 

    ![](https://hackmd.io/_uploads/H13a99T0q.jpg)

16. Open Preset Editor and add the new workflow script 

    ![](https://hackmd.io/_uploads/SkAgicTRc.jpg)
    
    ![](https://hackmd.io/_uploads/HkUQjq6Rq.jpg)

    > Example:
    > ![](https://hackmd.io/_uploads/S1Xdoc6A5.jpg)

**Step 9: Accept the changes.** 

Now, every time you get a message, it is going to translate into tasks in the OMS for the Customer Profile. 

# Glossary

## General OMS Definitions

| Term | Definition | 
| -------- | -------- |
| OMS     | Operational Management System (OMS) is a media management platform that organizes, monitors, and surfaces media fulfillment data from various integrated systems into a single unified view. The platform enables users to monitor the health of their business, analyze processes, and provide actionable insight via an interactive and customizable UI.     |
| Dashboard | A high-level view of orders and deliveries, filterable by specific statuses by month. Enables users to perform further in-depth investigation by actioning off orders in a specific status, viewing on time delivery trends, and downloading custom created reports (if available). |
| Orders     | A view of jobs by Customer; users can view statuses by assets required for delivery.      |
| Jobs | A view of individual line-item deliverables, whether edit tasks or delivery tasks, within an order.  |
| Task Management     | Enables users with the ability to manage steps that require human intervention/action in any part of the workflow process.     |
| File Manager | Provides users an interface to browse, inspect, and transfer files among storage locations.  |
| Color indicators*     | Color indicators will display on statuses, sources, and status timelines as a quick visual representation to the user on the current state.| 


The following color indicators used in OMS include:

| Color/Indicator* | Description |
| -------- | -------- |
| Yellow | Order or job is in an in-progress state. | 
|  Job Status Timeline     | An unassigned task that indicates a task is waiting for a user to action on.     | 
| Blue |Only displayed on the job status timeline, a blue status indicates an assigned task that a user can then view. | 
| Red     | Issue has occurred.     | 
| Gray | Components (I.e. assets) not yet available to start job/task. |

## OMS Workflow Terms

| Term | Description |
| -------- | -------- | 
| Supply Chain | A network between an organization and its suppliers to produce and distribute a specific product to the final buyer.      | 
| Presets | SDVI “recipes” for cloud-based media processing like edits, transcode, QC, and outbound delivery.  | 
| Rules     | Connects and sequences Presets into Supply Chains.     |
| Workflows | Connects to SDVI Presets and Rules. This can be a single step or an entire supply chain. | 
| Customer Profile     | Allows a workflow to be associated to a specific customer’s deliverable requirements.      |
| Orders | Enables users to request (and, to some extent, customize) deliverables and associate them to a Title.  | 
| Jobs     | End-to-end steps required to fulfill the deliverables in an Order.      |
| Tasks |Machine-driven (SDVI) or user-driven actions needed to be taken into action in order to move a Job to completion, and after every Job completed in an Order, fulfill the requirements and complete the latter.| 

## OMS Interface Terms

### Dashboard

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Dashboard | Awaiting Assets| All pending jobs that are still expecting source assets for deliverable creation.     |  N/A   |N/A|
| Dashboard | Ready | All pending jobs have source assets ready for deliverable creation. | N/A | N/A |
| Dashboard     | Review & Edit | All pending jobs that are in the following statuses: <br>`Review`,<br> `Prep for Edit`, <br>`Edit`,<br>`QC`      | N/A    |  N/A   |
| Dashboard | Processing | All jobs in a status of `Render`. |  N/A   |   N/A  |
| Dashboard | Awaiting Delivery | All jobs in a ready for delivery state. | N/A | N/A |
| Dashboard | Delivered | All jobs that have completed edit or delivery. |  N/A   |   N/A  |

### Orders List View

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Orders List View | Order ID | Systemically generated GUID that groups together all jobs within the order.  |  N/A   | N/A    |
| Orders List View     | Description     | User entered (string) text that describes the order.      |  🗸   |  🗸   |
| Orders List View | PO # | Tracking number for the order; can be entered as (string) text that ties into a 3rd party system.  | N/A | N/A |
| Orders List View | Managed by | User that is responsible for the order from end-to-end. |   🗸   |   🗸   |
| Orders List View | Billable customer | Billing for the order; can be split billing or billing to a third party. <br>(*Note: Typically ties back to a financial system and can be a systemic lookup as required.*) | N/A | N/A |
| Orders List View     | Created     | Date and time the order was created. <br> (*Note: All date and times listed are local to the user’s time zone*.)     |  N/A   |  N/A   |
| Orders List View | Status | The position or state of all jobs in the order within the end-to-end workflow. | N/A | N/A |
| Orders List View     | Progress     | A visual representation depicting the overall state of all jobs within the order. <br> (*Note: Hovering over the progress bar displays the total number of jobs pending*.)     | N/A    |  N/A   |

### Orders List View: Job Details

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Orders List View: Job Details     | Job ID     | Systemically generated GUID for the job within the order.     |  N/A   |  N/A   |
| Orders List View: Job Details | Job Type | The job classification that determines the workflow process, either` Edit` or `Delivery`. | N/A | N/A |
| Orders List View: Job Details     | Title     | Name of the asset for which the job is being placed.      |  N/A   |  N/A   |
| Orders List View: Job Details  | Customer | Customer in Customer Profile.  |  N/A   |  N/A   |
| Orders List View: Job Details | Due Date | Date and time the job is due. <br> *(Note: All date and times listed are local to the user’s time zone.)* | N/A | N/A |
| Orders List View: Job Details     | Status     | Displays the current state of the job. Statuses will transition from one state to the next once completed.|  N/A   |  N/A   |
|  |  | Statuses for the Edit workflow include: <br> `Submit` (Job has been created and submitted.),<br> `Awaiting Assets` (Waiting for source assets to be uploaded into system.),<br>` Prep for Review` (Ingest has completed and job is ready for Tech Evaluation.), <br>`Review` (Job is processing through Tech Evaluation.),<br> `Prep for Edit` (Tech review has been accepted and the edit session is triggered.),<br>`Edit` (Master asset is being edited within Adobe Premiere to create the output/distribution master.),<br> `Render` (Edit session has completed in Premiere and rendering for the output/distribution master is in process.),<br> `Completed` (Workflow has successfully completed and the deliverable has ingested successfully for use by the delivery job.)     |     |     |
|  |  | Statuses for the Delivery workflow include: <br> `Submit` (Job has been received.), <br> `Awaiting Assets`  (Waiting on needed sources deliverable from edit job.) to process job, <br> `Ingest` (Output/Distribution master is being ingested.), <br>`Send` (Deliverables are being sent to the destination.), <br> `Completed` (Delivery has completed and email notification has been sent)<br> <br> (*Note: color indicators on the status will display to signify whether the status completed (`green`), is in progress with potential to assign a task. (`yellow`), errored (`red`)*) |  |  |
| Orders List View: Job Details     | Sources     | Displays the number of total sources needed to fulfill the edit or delivery job. <br> (*Note: Hovering over a pending sources indicator will display the number of pending assets still required.)*      |  N/A   |  N/A   |

### Order Placement: Order Details

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Order Placement: Order Details | Order Description      | User entered (string) text that describes the order to be placed.      | 🗸 | 🗸 |
| Order Placement: Order Details | PO # | Tracking number for the order; can be entered as (string) text that ties into a 3rd party system. | X | 🗸 |
| Order Placement: Order Details     | Managed by     | User that will be responsible for the order from end-to-end. <br> *(Note: Defaults to user that is placing the order.)*    | 🗸 | 🗸 |
| Order Placement: Order Details | Billable Customer | Billing for the order; can be split billing or billing to a third party <br> *(Note: Typically ties back to a financial system and can be a systemic lookup as required.)*  | X | 🗸 |
| Order Placement: Order Details     | Customer     | Customer that you’re placing the job for.  | 🗸 | 🗸 |
| Order Placement: Order Details | Profile | Admin created template that pre-populates all required component deliverables for the specified Customer; defines the workflow and technical spec that will be processing for the job. <br> *(Note: Components in the order can be manually adjusted by the user placing the order in step 3.)* | 🗸 | 🗸 |
| Order Placement: Order Details | Due Date | Date and time the job needs to be completed. <br> *(Note: All date and times listed are local to the user’s time zone.)*   | 🗸 | 🗸 |
| Order Placement: Order Details     | Embargo Date     | Limit the date and time of when a delivery should be completed. <br> *(Note: Pertains to delivery workflow jobs rather than edits.)*      | X | 🗸 |
| Order Placement: Order Details     | Timezone     | Timezone of the user placing the order; can be adjusted for other timezones should a user not want to manually calculate.     | X | 🗸 |
| Order Placement: Order Details | Media | As defined by the Profile, the field is defaulted to a specified resolution. | X | 🗸 |
| Order Placement: Order Details | Audio | As defined by the Profile, the audio track languages will define which tracks are required for the job. <br> *(Note: The user can modify the ranking order of which tracks are needed and/or delete and add any additional tracks.)*   | X | 🗸 |
| Order Placement: Order Details     | Subtitle     | As defined by the Profile, the subtitle track languages will define which tracks are required for the job.  <br> *(Note: The user can modify the ranking order of which tracks are needed and/or delete and add any additional tracks.)*    | X | 🗸 |
| Order Placement: Order Details | Audio Config | As defined by the Profile, the audio configuration will define which audio is required for the job.  | X | 🗸 |

### Order Placement: Title Selection

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Order Placement: Title Selection      | Title Search     | Ability for user to add which title(s) need to be edited or delivered for the order  <br> *(Note: The user can search via partial or full string text of the asset as well as add multiple titles for the order.)*     |  🗸   |  X   |

### Jobs List View 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Jobs List View  | Job ID | Systemically generated GUID for the job within the order.  | N/A | N/A |
|  Jobs List View     | Job Type     | The job classification that determines the workflow process, either `Edit` or `Delivery`.    |  N/A   | N/A  |
| Jobs List View | Title | Name of the asset for which the job is being placed.  |  N/A   | N/A  |
| Jobs List View | Customer | Customer in Customer Profile |  N/A   | N/A  |
| Jobs List View     | Due Date     | Date and time the job is due.     |  N/A   | N/A  |
| Jobs List View     | Created     | Date and time job was created  <br> *(Note: Hovering over a pending sources indicator will display the number of pending assets still required)*     |  N/A   | N/A  |

### Job Detail: Timeline 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Job Detail: Timeline      | Timeline     | The timeline displays the current state of the job. Statuses will transition from one state to the next once completed.     |  N/A   | N/A  |
|  |  | Statuses for the Edit workflow include: <br> `Submit` (Job has been created and submitted.), `Awaiting Assets` (Waiting for source assets to be uploaded into system.), <br>`Prep for Review` (Ingest has completed and job is ready for Tech Evaluation.), <br>`Review` (Job is processing through Tech Evaluation.), <br> `Prep for Edit` (Tech review has been accepted and the edit session is triggered.), <br> `Edit` (Master asset is being edited within Adobe Premiere to create the output/distribution master.), <br> `Render` (Edit session has completed in Premiere and rendering for the output/distribution master is in process.), <br> `QC` (Edited asset in Quality Control.), `Completed` (Workflow has successfully completed and the deliverable has ingested successfully for use by the delivery job.)  |     |     |
|  | | Statuses for the Delivery workflow include: <br>`Submit` (Job has been received.), `Awaiting Assets` (Waiting on needed sources deliverable from edit job to process job.), <br> `Processing` (Sources are being processed.), <br> `Delivering` (Deliverables are being sent to the destination.), `Delivered` (Deliverables are sent to the destination.), `Completed` (Delivery has completed and email notification has been sent.)  |  |  |
|      |      | *(Notes: <br>Color indicators on the status will display to signify whether the status completed (`green`), is in progress with potential to assign a task (`yellow`), errored (`red`), or an assigned task can be viewed (`blue`). <br><br> `Date/Time` is the date and time the state successfully completed. <br> <br>`Duration` is the length of time (days, hours, minutes, etc.) that the status has been in that state).*      |     |     |

### Job Detail: Assets 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Job Detail: Assets      | Sources     | Displays the number of total sources in a pending or received state needed to fulfill the edit or delivery job. <br> *(Note: The source asset filename will display once fulfilled)*     |  N/A   |  N/A   |
| Job Detail: Assets | Deliverables | The components needed to create the deliverable needed to fulfill the job, including:<br> `Media`, <br> `Audio`, <br> `Subtitle`  |  N/A   |  N/A   |
| Job Detail: Assets     | Synopsis     | Summary of asset. <br>
*(Note: Metadata populated if sent in payload.)* |  N/A   |  N/A   |
| Job Detail: Assets | Original Voice Language | Original audio language of asset. <br>
*(Note: Metadata populated if sent in payload.)* |  N/A   |  N/A   |
| Job Detail: Assets | Country of Origin | Original country where assets were created. <br> *(Note: Metadata populated if sent in payload.)*  |  N/A   |  N/A   |
| Job Detail: Assets     | Related Files     | Additional files in relation to the job (e.g. QC report).     |     |     |

### Task Management – Review Tasks 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Task Management – Review Tasks      | Task ID     | Systemically generated GUID to define the task item. | N/A    |  N/A   |
| Task Management – Review Tasks      | Type     | Specific to Review Tasks under Task Management only, the type defines what type of Review is needed.     | N/A    |  N/A   |
| Task Management – Review Tasks      | Related Job     | The associated job id that requires a manual review.  <br> *(Note: Users can click on the related job id to link back to the job needing further review.)*     | N/A    |  N/A   |
| Task Management – Review Tasks      | Due Date     | Date and time the job is due <br> *(Note: All date and times listed are local to the user’s time zone.)*      | N/A    |  N/A   |
| Task Management – Review Tasks      | Age     | The duration in days, hours, and/or minutes the task has been in the corresponding status.     | N/A    |  N/A   |
| Task Management – Review Tasks      | Title     | Name of the asset that requires manual review.     | N/A    |  N/A   |
| Task Management – Review Tasks      | Edit Session     | Systemically generated GUID that reflects the edit job. <br> *(Note: if the edit session processed via the automated system, this ID would be specific to A&E, otherwise the ID reflected will be the same as the job ID.)*    | N/A    |  N/A   |
| Task Management – Review Tasks      | Status     | Current state of the task, including: <br> `Ready`, <br>`In Progress`,<br> `Complete`  <br> *(Note: Any failed or tasks that result in error will be displayed via the Processing Exceptions page.)*   | N/A    |  N/A   |
| Task Management – Review Tasks      | Assigned     | User that has been assigned the manual task. <br> *(Note: Hovering over the field allows the user to search for and enter a user via type-ahead. Alternatively, a user can also click the drop-down to select a user as well.)*     | X    |  🗸   |
| Task Management – Review Tasks      | Notes     | Enables the ability for users to comment on the task. <br> *(Note: An indicator will display on the notes icon to denote whether there are unread messages on the note.)*    | X    |  🗸   |
| Task Management – Review Tasks      | Reviewing     | Specific to Review Tasks under Task Management only.     |  N/A   | N/A    |
| Task Management – Review Tasks      | Editing     | The Adobe Premiere icon  will be displayed to indicate the editing task is to be completed in Adobe Premiere.   |  N/A   | N/A    |

### Task Management: Processing Exceptions 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Task Management – Processing Exceptions      | Task ID     | Systemically generated GUID for each task that has errored.     |  N/A   | N/A    |
| Task Management – Processing Exceptions      | Age     | The duration in days, hours, and/or minutes of the task that has an error and needs to be manually reviewed.      |  N/A   | N/A    |
| Task Management – Processing Exceptions      | Related Job     | The associated job id where the error has occurred. <br> *(Note: users can click on the related job id to link back to the job needing further review.)*     |  N/A   | N/A    |
| Task Management – Processing Exceptions      | Title     | Name of the asset that has an error.      |  N/A   | N/A    |
| Task Management – Processing Exceptions      | Status     | The GUID assigned to the title of the asset.      |  N/A   | N/A    |
| Task Management – Processing Exceptions      | Due Date     | Date and time when the job is due.   |  N/A   | N/A |

### Customer Profiles 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| Customer Profiles       | ID     | Systemically generated GUID for each profile.     |  N/A   | N/A |
| Customer Profiles       | Profile Name     | User entered text to describe the profile.     |  N/A   | N/A |
| Customer Profiles       | Customer     | Customer for which the profile was created.     |  N/A   | N/A |
| Customer Profiles       | Created By     | User that created the profile.     |  N/A   | N/A |
| Customer Profiles       | Created     | Date the profile was created.      |  N/A   | N/A |
| Customer Profiles       | Updated By     | User that updated the profile after it was created.     |  N/A   | N/A |
| Customer Profiles       | Updated     | Date the profile was updated after it was created.     |  N/A   | N/A |

### New Profile 

| Page | Field | Definition | Required | Editable |
| -------- | -------- | -------- | --- | --- |
| New Profile        | Customer     | Customer for which the profile was created. <br> *(Note: User can search for an existing customer in the dropdown via type-ahead or create a new customer by entering it in the field and pressing **Enter**.)*      |  🗸   |  🗸   |
| New Profile        | Profile Name | User entered string text to describe the profile. <br> *(Note: A profile is an admin created template that pre-populates all required component deliverables for the specified Customer; this profile defines the workflow and technical spec that will be processing for the job.)*      |  🗸   |  🗸   |
| New Profile | Workflow       | The applicable preset or grouping of presets as it’s been created and defined in SDVI that the order will run against.     | 🗸     |  🗸   |     |
| New Profile        | Resolution     | The resolution expected for this Customer and Workflow options include:<br> `4K`, <br>`FHD`,<br> `HD`,<br> `SD`     |  X   |   🗸  |
| New Profile        | Audio     | Ability for users to specify required audio track languages in sequence for the specified Customer and Workflow  <br> *(Note: Though the profile specifies the standard audio tracks for this Customer, when the user creates the order, they can add, remove, or reorder the tracks as required.)*   |  X   |   🗸  |
| New Profile       | Subtitle     | Ability for users to specify required subtitle track languages in sequence for the specified Customer and Workflow  <br> *(Note: Though the profile specifies the standard subtitle tracks for this Customer, when the user creates the order, they can add, remove, or reorder the tracks as required.)*    |  X   |   🗸  |
| New Profile       | Email Template     | Delivery notification template populated by variables from the data set. Users can populate the standard set of individuals that should receive the notification in the `To`, `CC`, or `BCC` lines  <br> *(Note: The deliverable notification is defaulted to be sent the user who is managing the order that the admin does not need to specify.)*    |  X   |   🗸  |

![](https://hackmd.io/_uploads/ry0zpzkTq.png)

# References

## Basic Troubleshooting FAQ

Find documentation that can help you troubleshoot the most common problems when using OMS.

| Feature | Issue | Cause | Workaround |
| -------- | -------- | --- | --- |
| OMS UI | Polaris Frontend is throwing an error when making an endpoint call to the Polaris Backend | This is typically a problem related to the Backend APIs. You can look at the **Network** panel in the browser to find more information about the actual issue. | We recommend that you simulate the request using a testing tool like [Postman](https://www.postman.com/downloads/) and test that flow using a local instance of Polaris (to be able to debug locally). <br> <br> You may also check [Datadog](https://www.datadoghq.com/) and look at the errors on the WEB service to highlight any code issues with the backend APIs. |
| Orders | When creating an Order, a red notification appears saying there was a problem submitting an order | This may be caused by bad profile setup, or an issue with the Build Job logic on the Polaris backend for the specific Job type (found in `orders.models.py`). <br><br> This may also be an issue surrounding requests that are being made to SDVI APIs to grab Asset Inventory. | You can look at the **Network** panel in the browser to see if any  errors have surfaced. <br><br> You may also check [Datadog](https://www.datadoghq.com/) for logs and stack traces to point to the issue. |
| Orders | Order submitted is fine from the Frontend, but the Order is stuck | The Order has Pending Assets that needs immediate attention.<br> <br> It can also mean that the SQS message has not been received by SDVI, or that there is Preset failure caused by data not being sent correctly to the SDVI due to: <br> - a bad profile; or <br> - code issue in the Build Job method on the Job Model <br><br> If  all the data looks good from **OMS > Rally**, then this could be a Rally Preset Issue. Potential errors are: <br> - Key Error <br> - Invalid Syntax <br> - Variable used before defined <br> <br> If an error doesn’t land in one of those categories, then it may be an SDVI issue or  you may need logs from SDVI to get further details. | Check to make sure the Order doesn’t have any Pending Assets to prevent the order from moving forward. <br> <br> You may also check if the SQS message was received by SDVI. If the message got to SDVI, next check for any errors on Presets. |
| Orders | Order is submitted and all components are available; Rally doesn’t show an error but the Order doesn’t advance in OMS | - Message payload from **Rally > OMS** may be malformed. Error in th `listen.py` Python code found in `orders.listen.py`. Any potential code issues should be shown in [Datadog](https://www.datadoghq.com/) for you to narrow down the root cause. <br><br> - OMS doesn’t have access to poll the `Notification` queue. This can be tested locally by using  the same access keys the environment is using to make sure that OMS can successfully poll the queue.<br><br> - If there is an error in Polaris to poll the queue, this would be a permission issue on the AWS account and the Policy / Keys. | Confirm that the presets are properly sending to the `OMS_Notifications` queue, which is what Polaris subscribes to in order to process status messages from Rally. Any potential code issues should be shown in Datadog to narrow in on the root  cause. |
| Pending Assets | Pending Assets were dropped in the correct location, but OMS never shows the updated status on the asset |  OMS never receives the SQS message. | Follow the steps above to confirm that OMS can properly poll the queue: <br><br> 1. Check to confirm the filename requested matches the filename dropped in the Stubs location.<br> 2. Check the ING- presets to make sure there are no errors.<br> 3. Check [Datadog](https://www.datadoghq.com/) to see any stack traces that exist when OMS  receives a message. |
| SDVI | Timeout issue or unknown error on Provider in SDVI | Undetermined | You need to make a direct request to SDVI to find out the issue and workaround. |
| SDVI | New user onboarded into SDVI doesn’t have access to create/update presets | New user should be in the right user group in order to have the right access privileges | Confirm that the groups are properly set for the user in OKTA, then have the user sign in again. If that doesn’t work, make a request to SDVI to inspect the issue with the user |
| OMS UI | New user onboarded into OMS is not seeing specific parts of the UI | New user is not in the right user group in order to have the right access privileges | OMS app permissions are based on the group that the user was set to in OKTA. Confirm the group is correct in OKTA and have the user log in again |
| SDVI Rally | Preset in Rally is continually failing, hard to find the core issue | Undertermined | To find the root cause, a developer can run the RALLY SDK locally for `Decision Engine` presets and insert breakpoints in the Python code and step through the preset locally to narrow in on the root cause. |
| SDVI Rally | Rendering an Edit fails | The Render preset in Rally provides enough details to make some guesses at the cause. It may be a missing label, based on DPD sent to the Access WO.<br><br> It can also be a version mismatch. | Refer to SDVI documentation for troubleshooting root case <br><br> If the cause is version mismatch, you need to make sure you are using the same Premier version as the AME provider that was setup in Rally. |
| Rightsline | Rightsline Sync stopped working | Possible  code issues in the `RightsLineSQSHandler` method.<br><br> The listener may also be inactive.  | Check [Datadog](https://www.datadoghq.com/) for any code issues in the `RightsLineSQSHandler` method, this will show in the stack trace. <br><br>Confirm that the listener is active, you should see  logs showing  how many messages are received, if you don’t see a message about  receiving messages, then the listener needs to be checked in the environment to confirm it is running. |

## API documentation

Visit [OMS API Documentation](https://gadget-dev.ladb.com/api/docs/) for available API endpoints. Refer to **Roles and Permissions** for accessing OMS API endpoints and requests as an Anuvu user.