Skip to main content

Celonis Product Documentation

O2C: Remove Delivery Blocks
Overview

Use Case Name

Automated removal of delivery blocks for sales orders

Execution Capacity

Reduce lead times & raise no-touch rates

Process / Data Model

Order-to-Cash data model

Semi-/Fully automated

Fully automated

Systems

SAP ECC or S/4HANA

SAP TCode in GUI

VA02 (Change Sales Order)

Updated SAP field

VBAK.LIFSK

Execution Gap

Delivery blocks are an essential part of any order management process. Looking at the Celonis customer base, on average, 20% of sales orders undergo a delivery block which is automatically set by the system. Removing these delivery blocks induces a lot of manual effort to first all check if all requirements are met and subsequently go into the system and manually remove the block. This manual procedure slows down deliveries and can have a negative effect on on-time delivery rate and customer satisfaction. On average, the manual check including the manual removal takes 15 minutes per sales order. What if we fully automated the check and removal of delivery blocks with Celonis EMS Automation?

Business Case Calculation

Given a customer where 2h per day are required per logistics center to remove delivery blocks from sales orders. A customer who has 8 logistics centers in total could therefore save 2 FTEs when automating the removal of delivery blocks.

Customer Example

Currently, the customer has dedicated team members who manually once a day check all relevant sales orders which fulfill the criteria (blocked with a certain block type, delivery date today or tomorrow depending on the route, minimum order level reached by order in combination with potential other orders) if for one of the items the required quantity is available. They do so via a specific report and if this is fulfilled, they remove the delivery block. Otherwise, they postpone the order. For this, they need to identify the next possible delivery date (using a specific DSD module) and postpone the delivery to that date using a custom implementation.

Customer Solution

There are 4 Action Engine skills and two automation skills. The use case to unblock sales orders is solved as follows:

  • Two Action Engine skills identifying orders which would qualify to be unblocked today to be delivered on time today or tomorrow (depending on the route type)

  • They run periodically and create new Signals at specific times of the day which trigger the automation to potentially unblock these orders

  • The automation checks if there is enough stock for at least one of the items on the order, and if so, remove the delivery block

41195480.png

Why Celonis EMS Automation?

The first striking advantage is that the advanced business logic for auto-removing delivery blocks can easily be created and adjusted by the customer’s business analysts without the need for technical ABAP development. In the customer example, one crucial condition was to look at sales orders that were due for delivery, had sufficient material available to fulfill the order, but was still on hold due to particular delivery blocks. This condition refers to the entire history of a single sales order. While it’s easy to describe this condition using Celonis’ Process Query Language (PQL), it’s cumbersome to implement it in SAP and would require SAP developer knowledge. As a second compelling advantage, the customer stated that it is not possible to implement the desired granular logic on the source system level.

Required IT Architecture

The IT architecture required to successfully implement this automation use case can be found on the following help page.

Project Timeline & Effort

The recommended timeline, milestones and project members needed to successfully implement this automation use case can be found on the following help page. .

Technical Setup

The table below shows the technical setup steps required to configure this use case successfully.

Note

It is strongly recommended that the use case package import and business logic configuration & validation are tackled in parallel to the SAP integration setup.

Step

Documentation

Who

Effort

Update extractor to real-time extractor

Installation Guide

IT Contact

Data Scientist

2 h

Install Celonis on-prem Agent and set to automatic start

Installation Guide

IT Contact

Data Scientist

2 h

Import SAP transport for credit release action

SAP Automation Package

IT Contact

2 h

Create technical SAP user with required permissions

Installation Guide

IT Contact

2 h

Import Use Case Package

The following import guide contains instructions for importing the Action Engine and Studio Skills for this automation use case.

The relevant use case package can be downloaded using the following download link.

  • Automation Use Case Package (download package)

Template Building Blocks

After importing the package (see technical setup above), you will find the following building blocks in your EMS team. The vast majority of the Data Scientist person days indicated in the project setup table above is allocated to customizing these building blocks and adjusting the business logic to the customer’s needs.

1. Identify Orders with Delivery Blocks
41195675.png
Action Engine Skill

Action Engine Skills work by scanning all relevant records (e.g. sales orders) for certain rules and criteria whenever the underlying data model is reloaded. These Action Engine Skills trigger actions and automations that are defined in associated Studio Skills.

This action Engine Skill will check all incoming sales orders (theSignal ID), and will flag those with delivery blocks that can be safely removed.

Signal ID

The Signal ID is the object or record on which the use case is based. In this use case, a new Signal is generated for eachSales Document ("VBAK"."VBELN")that contains one or more delivery blocks that can be safely removed.

Customer Example

The Action Engine Skill identifies sales orders with item quantities ("VBEP"."BMENG") greater than zero, confirmed delivery dates ("VBAK"."VDATU") of today, and delivery blocks still in place. These are orders that are due for delivery, but still contain delivery blocks that need to be removed. The Action Engine Skill triggers an associated Studio Skill which removes the delivery blocks from all relevant orders, making them available for delivery.

Skill Filters

Action Engine Skills are configured through a set of filters that apply to a particular data model. Usually, a combination of different types of filters are used to define an Action Engine Skill. These can be organizational filters (referring to particular sales organizations or customer groups), process flow filters (related to cycle times, process events and conditions), or record attribute filters (order-specific criteria like document types or delivery block types).

Below, you will find a collection of filters and considerations for identifying orders with delivery blocks that can be removed.

Organizational Filters

Organizational filters are those that define the organizational scope of the Action Engine Skill (e.g. company codes, sales organizations, sales groups, profit centers, and other custom criteria).

Sales groups and organizations

Different sales organizations or business units may have unique delivery blocks and conditions. They may also rely on bespoke business rules or filter logic to identify delivery blocks that can be safely removed.

Example filters:

  • FILTER "VBAK"."VKORG" IN ('ABC', 'DEF');

    -- Sales Organization is ABC or DEF

  • FILTER "VBAK"."VKBUR" IN ('123', '456');

    -- Sales Group is 123 or 456

Additional remarks:

  • For these kinds of filters, it’s often easiest to use the Column Filter in Action Engine to define the required organizational conditions for the Skill.

Particular customers

Particular customers or client groups may have unique delivery blocks and conditions. They may also rely on bespoke business rules or filter logic to identify delivery blocks that can be safely removed.

Example filters:

  • FILTER NOT "VBAK"."KUNNR" IN ('123', '456');

    -- Customer Number is not 123 or 456

Delivery routes

Your customer may have unique conditions related to delivery routes, existing shipments, or regularly-scheduled orders that need to be met before removing delivery blocks from orders.

Example filters:

  • FILTER SUBSTRING("VBAP"."ROUTE", 0, 1) IN ('X', 'Y', 'Z');

    -- Route must begin with X, Y or Z

Minimum value limit

Your client may only want to remove delivery blocks from orders when if there are existing shipments or deliveries being sent to the respective customer. You could do this by ensuring that the combined value of each customer's deliveries due today is greater than a defined limit.

Example filters:

  • FILTER ( PU_SUM (DOMAIN_TABLE ( "VBAK"."KUNNR" ,PU_MIN ( "VBAK" , PU_MIN ( "VBAP" , "VBEP"."EDATU" , "VBEP"."BMENG" > 0 ) , SUBSTRING("VBAP"."ROUTE", 0, 1) IN ('X', 'Y', 'Z') AND "VBAP"."ABGRU" IS NULL ) ) ,"VBAP"."NETWR_CONVERTED" , SUBSTRING("VBAP"."ROUTE", 0, 1) IN ('X', 'Y', 'Z') AND "VBAP"."ABGRU" IS NULL ) )

    >= 1000.00;

    -- Value of orders being delivered is greater than $1,000

Additional remarks:

  • These kinds of conditions are likely to be specific to your client, so you should take the time to understand their requirements for unblocking deliveries.

Process Flow Filters

Process flow filters are those that define process-specific conditions for the Action Engine Skill (e.g. filters related to process cycle times, relevant activities, order process flows, and other custom criteria).

Delivery date is today

The confirmed delivery date is set for today. As such, relevant delivery blocks need to be removed so that the order can be shipped to the customer as soon as possible.

Example filters:

  • FILTER ROUND_DAY(PU_MIN("VBAP", "VBEP"."EDATU")) = TODAY();

    -- Confirmed delivery date ("VBEP"."EDATU") is today

Additional remarks:

  • A combination of filters related to requested delivery dates, material availability dates, and others may be required to define orders that need to be unblocked for delivery.

Record Attribute Filters

Record attribute filters are those that limit the scope of the Action Engine Skill to records (e.g. sales documents) that have particular characteristics (e.g. those with or without particular holds, payment terms, shipping conditions, and other custom criteria).

Document and order types

Different documents or order types may have unique delivery blocks and conditions. They may also rely on bespoke business rules or filter logic to identify delivery blocks that can be safely removed.

Example filters:

  • FILTER "VBAK"."VBTYP" = 'C';

    -- Sales document category ("VBAK"."VBTYP") is C (order)

Order is not canceled

Only orders that have not been canceled should be considered for delivery.

Example filters:

  • FILTER "VBAP"."ABGRU" IS NULL;

    -- Reason for rejection of sales order ("VBAP"."ABGRU") is NULL

Delivery and processing statuses

In many cases, delivery blocks should only be removed from orders when certain conditions, such as delivery or processing statuses, are met. In this case, we are only interested in removing delivery blocks from orders that have not yet been completely processed.leverage the free-of-charge Analyst Training

Example filters:

  • FILTER "VBUP"."LFSTA" <> 'C' OR "VBUP"."LFSTA" IS NULL;

    -- Delivery status is not C (completely processed) or is NULL

  • FILTER "VBUP"."GBSTA" IN ('A', 'B');

    -- Overall processing status is A (not yet processed) or B (partially processed)

Additional remarks:

  • Based on your customer’s needs, further order or delivery status filters may be required. For example, you may need to consider orders with or without payment blocks, credit holds or other conditions.

Particular delivery blocks

In some instances, only certain types of delivery blocks can be safely removed from customer orders.

Example filters:

  • FILTER "VBAK"."LIFSK" = 'ABC';

    -- Delivery block is ABC

Additional remarks:

  • In most cases, this use case will not automatically eliminate all delivery blocks from orders. Instead, it is designed to automatically release certain types of delivery blocks that are currently removed manually, as long as particular conditions and rules are met.

Confirmed quantity

The order item quantity should be greater than zero, meaning that delivery has been confirmed with the customer.

Example filters:

  • FILTER "VBEP"."BMENG" > 0;

    -- Confirmed quantity is greater than zero

Adjustments and Extensions

You can easily apply business rules and logic to your process data using Celonis PQL. To learn more about PQL, you can leverage the free-of-charge Analyst Training Track in the Celonis Academy. The training tracks for “Analysis Building Basics”, “Basic Coding with PQL”, and “Analysis Building Advanced” will equip you with a deep understanding of the power of PQL.

The business logic in the Action Engine Skill outlined above is completely customizable. For the full list of available actions that can be performed through EMS automation, see EMS Help Page.Actions

2. Remove Delivery Block in SAP
41195676.png
Studio Skill

Studio Skills define the actions and system automations that are performed against a record (e.g. sales order) when an Action Engine Skill is triggered.

This Studio Skill removes an order’s delivery block ("VBAK"."LIFSK") in SAP when the confirmed quantity ("VBEP"."BMENG") is greater than zero and the delivery date is today.

Customer Example

The Studio Skill is triggered by an Action Engine Skill when an order’s confirmed delivery date is today, and the order quantity is greater than zero. The Studio Skill executes a BAPI or RFC call in the SAP system to remove the delivery block from the order and its line items.

Skill Configuration

Studio Skills are composed of a sensor and one or more actions performed in Celonis or connected IT systems. When an Action Engine Skill is triggered, the sensor executes the system actions defined in the associated Studio Skill. Usually, a combination of different types of actions are defined in the Studio Skill. These can be Celonis actions (query a data model, write data to a table or execute a machine learning script), system actions (apply data filters, process routers, or loops), ERP actions (remove a delivery block in SAP or update an account in Salesforce), communication actions (email a customer or Slack a colleague), and many others.

Below you will find the sequence of actions required to remove a delivery block from an order in SAP.

41194920.png

1) Action Engine Sensor

The Action Engine sensor will execute the Studio Skill when the associated Action Engine Skill is triggered.

Example custom inputs:

  • Sales document ("VBAK"."VBELN"): ${b1["sales document"]}

    -- Defines the sales order for which the delivery block will be removed in SAP

Additional remarks:

  • Based on your customer’s needs, further input fields may be required. For example, you may need to consider the delivery block, material availability, plant details, or shipping conditions in the actions you define.

2) Query Data Model

The Query Data Model action will retrieve defined data fields from a Celonis data model. In this case, we are querying the positions of the order.

Example columns:

  • Sales document item ("VBAP"."POSNR"): ${b2["sales document item"]}

    -- Sales document item

Example filters:

  • FILTER "VBAK"."VBELN" = '${b1["sales document"]}';

    -- Filter only on this sales order

Additional remarks:

  • Based on your customer’s needs, additional columns or filters may need to be defined in the Query Data Model action.

3) Loop

The Loop action will loop over the defined array and perform the defined actions for each respective record. In this case, the action loops over each position in the order and removes the respective delivery blocks that are in place.

Example array:

  • ${b2["sales document item"]}

    -- perform the loop across every sales document item, as defined in the "Query data model" action in step 2

Additional remarks:

  • Based on your customer’s needs, additional columns or fields (e.g. schedule line item) may need to be defined in the Loop action.

4) Query Data Model

The Query Data Model action will retrieve defined data fields from a Celonis data model. In this case, we are querying the data model to retrieve the order’s materials, quantities and units.

Example columns:

  • Sales unit ("VBAP"."VRKME"): ${b4["sales unit"]}

    -- Sales unit

  • Order quantity ("VBAP"."KWMENG"): ${b4["order quantity"]}

    -- Cumulative order quantity in sales units

  • Material number ("VBAP"."MATNR"): ${b4["material number"]}

    -- Material number

  • Sales document item ("VBAP"."POSNR"): ${b4["sales document item"]}

    -- Sales document item

Example filters:

  • FILTER "VBAK"."VBELN" = '${b1["sales document"]}';

    -- Only this sales order

  • FILTER "VBAP"."POSNR" = '${b3["sales document item"]}';

    -- One sales document item at a time (as defined in the loop action above)

Additional remarks:

  • Based on your customer’s needs, additional columns or filters may need to be defined in the Query Data Model action.

5) Execute SAP Action (Advanced)

The Execute SAP Action (Advanced) step will trigger a BAPI or RFC call in SAP to retrieve, create or change defined elements (delivery blocks, material quantities, etc.) of a business object (sales order, schedule line, etc.).

Example function module:

  • BAPI_MATERIAL_AVAILABILITY

    -- Check if enough material is available to deliver the order

    • This provides as an output the available quantity of the respective material: ${b5["material available"]}

Example input requirements:

  • ${b4["sales unit"]}

    -- Sales unit ("VBAP"."VRKME")

  • ${b4["order quantity"]}

    -- Order quantity ("VBAP"."KWMENG")

  • ${b4["material number"]}

    -- Material number ("VBAP"."MATNR")

  • ${b4["sales document item"]}

    -- Sales document item ("VBAP"."POSNR")

Additional remarks:

  • Within your Studio Skill, an advanced SAP action may be required to determine if an adequate amount of material is available to complete the delivery. Based on your client’s needs, you may need to complement this action with additional steps or conditions, or may be able to implement the use case using the simplified "Execute SAP Action" step.

6) Filter

The Filter action will apply a data filter which ensures that only objects that meet the filter requirements proceed to the defined actions in the Studio Skill.

Example filter:

  • FILTER ${b5["material available"]} >= ${b4["order quantity"]}

    -- Check if enough material is available to deliver the order

Additional remarks:

  • If the filter conditions are met, we can proceed and the next action in the Skill can be performed.

7) Execute SAP Action

The Execute SAP Action step will trigger a BAPI or RFC call in SAP to retrieve, create or change defined elements (delivery blocks, sales order details, etc.) of a business object (sales order, schedule line, etc.).

Example actions:

  • Remove Delivery Block (Sales Order level)

    -- Removes the pending delivery blocks from the sales order

Example input requirements:

  • ${b1["sales document"]}

    -- Sales document ("VBAK"."VBELN")

Additional remarks:

  • Within your Studio Skill, a simple SAP action is sufficient to remove the delivery block from the sales order. Based on your customer’s needs, however, you could use an advanced SAP action to make more personalized adjustments to the order details.