Getting to Know Core Integration of BRH

Objectives

After completing this lesson, you will be able to:
  • Integrate with BRH
  • Manage the entire lifecycle of Externally Produced Batches, including supplier coordination, user authorizations, and handling batches with missing actual values.
  • Enable and configure release automation for Externally Produced Batches, including setting up the release type and automating the batch release process.
  • Leverage AI-assisted Custom Release Check by understanding when to use it, how to enable and configure it, and how to apply it effectively

BRH Integration

General Definition

The specific format of the data exchanged, whether using asynchronous or synchronous, and using staging or not, is all implemented in Application Programming Interfaces.

While these are designed in such a way to be automatically used by other software, some documentation is still needed in order to be understood by the developers and system integrators that design, and implement systems using the API.

The SAP API Business Hub is a web application hosted by SAP to discover, explore, and test SAP and partner APIs (application programming interfaces) that are required to build extensions or process integrations. It also hosts Integration content, Events, CDS views, and more. On SAP API Business Hub you will find various resources you can use to build apps, integrations, and extensions easily. Browse through our content to find the APIs you want, seek out the integration flows that will help you work with different SAP products, and check out workflow content, events, and CDS views.

Specific for SAP BRH

SAP API Business Hub has all the information about the SAP API of SAP BRH, organized according to the communication method used:

As we have seen, in SAP BRH one can integrate both using Asynchronous (EVENTS) or Synchronous (ODATA4) communication methods. The payload is the same.

The Asynchronous or the Synchronous approach in SAP BRH are like two sides of the "same coin". Namely, the information that is exchanged is the same, the difference only being the communication method chosen, or packaging.

The API Business Hub contains the description of each detail of the payload for both communication methods, with also example code to facilitate understanding on how to integrate with other systems.

At the core of SAP BRH is the Batch: a specific Material produced in a specific Plant (or Location), with record information such as when the information was last modified, and if the record is in active or inactive status. This is the meaning of the above figure.

According to needs, the Batch has additional "properties" such as:

  • the organizational area used for defining locations in a quality department, for example; production areas, storage locations, or work centers
  • the order that triggered the batch creation.
  • the type of order that triggered the batch creation
  • the quantity
  • The date on which the batch expires
  • The date on which the batch was released in the source system.
  • The name of the supplier associated with externally procured batches.

The full list of properties (mandatory or optional ) is provided in the SAP Business Hub:

In the above figure one can see on the left side the first few lines of the documentation about the Payload for the Asynchronous (EVENTS) interface, while on the right side for the Synchronous (ODATA4) Interface.

Example for Nullable values but mandatory properties

Field nameType and constraintsDescription
plant_ID

string max

Length: 10

A unique identifier for the location (plant or customer) of the batch requiring a release decision.

organizationalArea_code

string

maxLength: 10

nullable: true

A unique identifier for an organizational area used for defining locations in a quality department, for example, production areas, storage locations, or work centers.

It is indispensable to properly understand how to apply the documentation that is provided in the SAP API Hub. Failure in understanding it would cause major delays in the achievement of the goal of integrating with SAP BRH.

Using as example the Batches help page for Synchronous communication (Help Page - Synchronous), here we want to focus the attention on the "type and constraints" column.

In this case, plant_ID and organizationalArea_code are both of type "string".

This means, they must start and end with a double quote sign (") and they must contain content interpretable as plain text. The string does not need to be constrained to characters of the ASCII character set, as long as there can be represented in UTF16. For example, all following languages are supported (list is not comprehensive): Chinese, Hindi, Hebrew, Arabic.

Some payload errors, focusing on "ID"

Input for "ID" of BatchError codeDeserialization Error
9999450012400

Invalid value 9999450012 (JavaScript number) for property "ID".

A string value must be specified as value for type Edm.String.

"9999450012blablablablablabla"400

Invalid value 9999450012blablablablablabla (JavaScript string).

The length of the Edm.String value must not be greater than the MaxLength facet value (10)

 400Unexpected token , in JSON at position 8.
null400Value for 'ID' must not be null.

The above table shows the reported error messages that are shown by the application when trying to post a payload that contains:

  • Only digits but not encapsulated between double quotes. This is interpreted as a Number and it is not appropriate since it should be a string
  • Too long string. Maximum length is specified as 10 characters
  • Empty. In this case the system is reporting the position in characters from the beginning of the message. The reason for "8" is due to the fact that the message consisted in "{"ID":,…" and therefore the position of the expected beginning of the value is position 8.
  • null. In this case, the developer placed a "null" value. There is big difference between an EMPTY value (as in the previous case) and a "null" value.

Other common payload errors

Not providing a mandatory fieldError codeError description
Not providing a mandatory field500Internal Server Error
Posting the same entity twice400Entry already exist
https protocol name forgotten200No description

In the above table, additional common errors are reported with their error code and the description, if available. Surely the hardest of all situations is when either no error message is reported (as for the 200) or a generic error (as for the 500). In both cases is recommended to follow the guidelines described in this document, and carefully inspect the payload content and the methods used for delivering it.

Optional is Not Always Optional

Minimal Batch payload according to the API

Code Snippet
12345678
{ "ID": "123466", "material_ID": "12345M", "plant_ID": "ABCD", "status_ID": "A", "sourceModifiedAt": "2022-11-09T13:36:02.000Z" }

Minimal required message

Code Snippet
12345678910
{ "ID": "123466", "material_ID": "12345M", "plant_ID": "ABCD", "status_ID": "A", "sourceModifiedBy": "aaa", "sourceIdentifier": "bbb", "sourceModifiedAt": "2022-11-09T13:36:02.000Z" }

SAP BRH is a brand new solution, rapidly evolving. The API Documentation is rapidly improving however it might contain some inconsistencies. For example, in the case of Batches, while avoiding that posting some optional values works properly, for other optional values the system returns a 400 error message with the information that the specific parameter (called "target" ) requires its value to be defined.

The above table shows (by trial and error) which parameters are really required instead of being marked as optional.

The safest way is therefore to always include all parameters in the posting and fill them with the appropriate values, and if optional use null.

Note

  1. Generate the payload from the source system
    Code snippet
    
    {
    "ID": "123466",
    "material_ID": 
    "12345M",
    "plant_ID": "ABCD",
    "status_ID": "A",
    "sourceModifiedBy": "aaa",
    "sourceIdentifier": "bbb",
    "sourceModifiedAt": "2022-11-09T13:36:02.000Z"
    }
    Expand
  2. Post to the OData4 and autoactivate
    Code snippet
    
    curl 
    --header 'Authorization: Bearer {token} ' 
    --request POST 
    --url 'https://{yourtenant}/dso_batches/BatchesStage’ 
    --header 'Accept: application/json’ 
    --header 'Content-Type: application/json’ 
    --header ‘x-sapbrh-autoactivate’
    --header 'DataServiceVersion: 2.0’ 
    --data '{
    "ID": "123466",
    "material_ID": "12345M",
    "plant_ID": "ABCD",
    "status_ID": "A",
    "sourceModifiedBy": "aaa",
    "sourceIdentifier": "bbb",
    "sourceModifiedAt": "2022-11-
    09T13:36:02.000Z"
    }' 
    
    Expand

In this example the data coming from a "source system" will have to be extracted and formatted according to the API documentation for Batches: https://api.sap.com/api/BatchesService/resource.

The "$token" is a security value that is described later in this lesson.

There are few important aspects to consider:

  1. Address: How to find the URL where to send the message ?
  2. Security: How to ensure that the call will be accepted ?
  3. Content: How to format the content ?
  4. Handling the response: How to be sure that the data was accepted by SAP BRH ?
  5. How to view the data in SAP BRH ?
  6. What to do if I see nothing in SAP BRH ?

We will address these aspects in the following pages

When your company has subscribed SAP BRH, they will get a "tenant" with the Application URL. That is the base address that needs to be put in the "URL" .

In the online documentation the string "{appName}…..{host}" needs to be substituted with the one provided in your subscription.

This information is known by the BTP Administrator of your BTP Account.

Please note that the only place to find the exact name of the endpoint is in the "Code Snippet" section of the documentation.

Note

  1. Get a token
    Code snippet
    
    curl 
    --location 
    --request POST 'https://{your authentication url}/oauth/token' 
    --header 'Content-Type: application/x-www-form-urlencoded' 
    --header 'Authorization: Basic base64encoded 
    username:password'
    --data-urlencode 'grant_type=client_credentials'
    
    {"access_token":"…",
    "token_type":"bearer",
    "expires_in":12345,
    "scope":"uaa...APIACCESS",
    …}
    
    Expand
  2. Use the token in the following calls
    Code snippet
    
    -- header 'Authorization: Bearer {{token}} 
    {"access_token":"…"token_type":"bearer","expires_in":1234,"scope":"uaa…APIACCESS",…}’
    
    Expand

Security is at the foundation of everything in SAP. The way we design software, the way we develop it, the way we test it, the way we deploy it: everywhere we think Security first.

In order to publish data in SAP BRH, you need first to get the credential of the BTP Integration Service from your BTP Administrator.

Those credentials consists in a username and a password. These have to be base64 encoded and then used as value of the $token in the header of the calls.

The output of the authorization request is a OAUTH2 token that then has to be used as value in the header of all subsequent calls.

Please be aware that the "expires_in" information tells that after that period the token will no longer be usable and therefore a new token needs to be requested again.

The single source of truth on the API is the well known API Business HUB, at the previously mentioned addresses.

There you can see not only a formal description of the payload, but also example values.

Additionally, by clicking on the "Try Out" even without adding an "environment" you can then see in the "code snippets" how the program should be written in order to interact with the SAP BRH.

Several source code examples are shown, and also command line (curl).

Hint

Access to the API Business Hub - API Reference (Batches- Staging)

Also for this question, the answer is the same as before: look in the API Business Hub. In the bottom of the same page where you have found the description of the payload, is also written the Response.

As we previously described in the general pages about Synchronous Communication, there are 3 messages needed for synchronous communication.

  1. The payload
  2. The response in case everything went well
  3. The response in case of error.

These are all provided in the above page. In this example, if the response of the call is "201" then it means that everything went well, while if the response is 4XX then the response will also contain some additional information to let you understand what went wrong.

There are two approaches to view the data in SAP BRH when it is sent using the Synchronous approach:

  1. Using the User Interface "Data monitoring" - Manage Staging and Active Data"
  2. Programmatically by performing a "GET"

In the following screen we show for example how different Batches posted to the Staging area can be seen in the Data Monitoring application. For example purpose, we use also BatchID and MaterialID with different character sets, demonstrating the wide support for many possible cases.

There are two approaches to view the data in SAP BRH when it is sent using the Synchronous approach:

  1. Using the User Interface "Data monitoring" - Manage Staging and Active Data"
  2. Programmatically by performing a "GET"

View the data in SAP BRH through the API

Code Snippet
123456
curl --header ‘Authorization: Bearer $token’ --request GET --url 'https://{yourtenant}/dso_batches/BatchesStage?$filter=(ID eq ‘\''123466’\")’ --header 'Content-Type: application/json’

With the above command you can verify that the entity that you have just posted to SAP BRH has arrived, and as well collect all the additional information that the system has generated for that specific record to make it usable in the application.

Note

Code snippet

{
"ID": "123467",
"material_ID": "12345M",
"plant_ID": "ABCD",
"status_ID": "A",
"sourceModifiedBy": "D069082",
"sourceIdentifier": "S4LCLNT300",
"sourceModifiedAt": "2022-11-09T13:36:02.000Z"
}


{
"material_ID": "12345M",
"ID": "123467",
"plant_ID": "ABCD",
"status_ID": "A",
"sourceModifiedBy": "D069082",
"sourceIdentifier": "S4LCLNT300",
"sourceModifiedAt": "2022-11-09T13:36:02.000Z"
}
Expand

In order to facilitate your own work, actually you do not need to create a payload with the properties in the same order as specified in the API.

As shown above you can create a payload with the properties in the order that is simpler to you,

However what is essential is that they are all there, and with the appropriate content and format !

SAP BRH API are all based on the HTTPS protocol, access is secured through OAUTH2 mechanism, are all strongly typed.

Therefore there could be many different types of reasons why a POST or a GET failed.

  1. Network error

    For example the network connectivity is not stable and the API call could not reach the server.

    Solution: Try again.

  2. Network encryption error

    For example the Secure Socket Layer of the application executing the call is corrupted.

    Solution: Verify that your SSL setup is properly working.

  3. Authorization error (401)

    For example, the credentials that you are using to collect the authentication token are failing. You will notice this by the token request (first call shown earlier) failing.

    Solution: Contact your BTP Administrator and request the new credentials.

  4. URL endpoint is wrong

    For example, the endpoint is not found since there is a typo in the address of the endpoint.

    Solution: Verify with the Business Api.

  5. Payload is wrong

    A common way to know is by checking the return message from the API call, in case of synchronous communication we have described previously that in fact three types of messages must be handled from a synchronous service: the input, the response in case that everything went as expected, and the error message. Usually the error message contains sufficient information for a developer to understand what went wrong. For SAP BRH, an error in the format of the payload would be reported as "400 Deserialization error".

    Solution: check carefully that the payload coincide with the specification. If everything is according to the specification, then the only way out is to open a ticket to the support . Few specific examples are reported in the previous slides.

SAP BRH is a highly integratable application, it enables integration using a rich set of API and supports both Asynchronous and Synchronous approaches. Through the standardized payloads, it is simple for developers to switch between the asynchronous or synchronous approach on demand. The online documentation, with source code examples makes it very simple for Integrators and Consultants to facilitate design and implement SAP BRH integration.

New Capabilities

Jurisdictional control (JC) is an examination of whether the procurement, manufacturing, and distribution processes within the supply chain of a Life Sciences company are compliant with the specifications authorized by the relevant health authority.

With release 2411, SAP Batch Release Hub for Life Sciences provides the following additional features to support the jurisdictional control process:

Manage suppliers of Externally Produced Batches

Contract Manufacturing Organizations (CMOs) plays a fundamental role in the industrialisation of drug manufacturing processes, facilitating reducing total cost of production through economy of scale. Furthermore, relying on CMOs increases resilience of the final product (given that different CMOs could be involved and therefore the sudden lack of availability of one CMO will not result in a production stop), that means also resilience increase for the access to medicine . S4/HANA or other ERP systems provide support for CMOs master data, however there could be situations where this is not the case and for this purpose in the release 2411 authorised users can maintain this data directly in SAP Batch Release Hub for Life Sciences. It is foreseen that in incoming releases of the product also automatic maintenance of that data be enabled.

Manage Users authorizations for externally produced batches

With this app, you can manage user authorizations for the Manage Externally Produced Batches with Missing Actual Values app.

In the Manage Externally Produced Batches with Missing Actual Values app, authorized users can enter missing actual values for batches produced externally by contract manufacturing organizations (CMOs). In particular, these actual values are for the restriction drivers used in the jurisdictional control check.

Manage Externally Produced Batches with Missing Actual Values 

Restriction drivers are the basic building blocks for recording the authorized specifications for jurisdictional control. Each restriction driver consists of one or more attributes from the supply chain. For each restriction driver attribute, there is an authorized reference value.

The actual values are provided usually through Application Programming Interfaces. However in certain cases this is not possible, and therefore through this app authorized users can provide missing actual values for restriction drivers.

Relevant Applications

All apps related with Jurisdictional Control and with Contract Manufacturing Organisations can be found in the "My Release Decisions" app, grouped in the "Jurisdictional Control" section.

Manage Suppliers of Externally Produced Batches

Manage CMO Suppliers

Upon clicking on Manage CMO Suppliers, you are presented with a Table with all registered CMO suppliers. Various interactable filters are available, which allow you to quickly filter those CMO of interest. y".

Clicking on "Create", will allow you to create a new CMO supplier.

New CMO Supplier

In the New CMO Supplier window you can provide the required information. The minimal information required is marked by a red asterisk, and in this version consists of

  • Supplier ID
  • Supplier Name

Additionally you can select for which Country or Region is that supplier to be involved, the city and its address.

Data Entering

After entering the required data one has to click no the "create" button.

Supplier Created

If the creation process is successful, then the screen changes accordingly and the "Supplier created" message is shown.

Manage Users Authorizations for Externally Produced Batches

With this app, you can manage user authorizations for the Manage Externally Produced Batches with Missing Actual Values app.

In the Manage Externally Produced Batches with Missing Actual Values app, authorized users can enter missing actual values for batches produced externally by contract manufacturing organizations (CMOs). In particular, these actual values are for the restriction drivers used in the jurisdictional control check.

You assign authorizations for suppliers and/or batch locations (CMO plants).

As a prerequisite, you need to create the required suppliers in the Manage Suppliers of Externally Produced Batches app.

You assign authorizations for suppliers and/or batch locations (CMO plants). As a prerequisite, you need to create the required suppliers in the Manage Suppliers of Externally Produced Batches app.

The authorizations you assign in this app work in conjunction with the role collection assigned to the user in the SAP BTP cockpit. Internal users and external users are handled differently as follows:

  • Users with the CMO internal role see all batches in the Manage Externally Produced Batches with Missing Actual Values app by default, and it is not necessary to assign any authorizations in this app.
  • Users with the CMO external role see no batches in the Manage Externally Produced Batches with Missing Actual Values app by default, and specific authorizations must be added in this app.

Here's what you can do in this app:

  • Filter for specific attributes to find the CMO user authorizations that you're interested in.
  • Create your own views to personalize the filters and information shown in your worklist.
  • Create a new CMO user authorization by assigning suppliers and/or batch locations to a user.
  • Edit the authorizations for a CMO user.
  • Set a CMO user as inactive.

To create a user you need to click on the Create item..

New CMO User

To create a new user

  1. Enter the required new CMO user and specify an activation status.
  2. A user needs to be active to be able to access the Manage Externally Produced Batches with Missing Actual Values app.
  3. In the CMO User Authorizations table, choose Create
  4. Enter an authorized batch location and/or an authorized supplier.
  5. In the bottom right side of the whole app click on Create.

The authorizations you assign in this app work in conjunction with the role collection assigned to the user in the SAP BTP cockpit. Internal users and external users are handled differently as follows:

  • Users with the CMO internal role see all batches in the Manage Externally Produced Batches with Missing Actual Values app by default, and it is not necessary to assign any authorizations in this app.
  • Users with the CMO external role see no batches in the Manage Externally Produced Batches with Missing Actual Values app by default, and specific authorizations must be added in this app.

Manage Externally Produced Batches with Missing Actual Values 

In the Manage Externally Produced Batches with Missing Actual Values app, authorized users can enter missing actual values for batches produced externally by contract manufacturing organizations (CMOs). In particular, these actual values are for the restriction drivers used in the jurisdictional control check.

You assign authorizations for suppliers and/or batch locations (CMO plants).

As a prerequisite, you need to create the required suppliers in the Manage Suppliers of Externally Produced Batches app.

You assign authorizations for suppliers and/or batch locations (CMO plants). As a prerequisite, you need to create the required suppliers in the Manage Suppliers of Externally Produced Batches app.

Restriction Driver

A restriction driver consists of one or more attributes of the supply chain that are subject to regulatory control.

Restriction driver attributes and their authorized reference values are documented in Authorized Supply Chain Maps (ASCM) that are used for jurisdictional control in the batch release process.

In the jurisdictional control check, the actual values of a batch are compared to the authorized reference values of the restriction driver attributes to determine compliance.

When batches are externally manufactured or packaged by a contract manufacturing organization (CMO), the actual batch values that are required for the jurisdictional control check are not received through integration with a source system. Instead, the actual batch values need to be entered manually in this app.

Manage Externally Produced Batches with Missing Actual Values 

Batch Worklist

Your worklist is based on the authorizations assigned to you in the Manage User Authorizations for Externally Produced Batches app. You only see batches for the suppliers and locations that are assigned to you.

Here's what you can do in the worklist:

  • Use filters to find the batches that you're interested in.
  • Personalize the filters and table columns and create your own views.
  • Assign a colleague as responsible for processing a batch.
  • Set a batch to the processing status Completed to indicate that all the actual values for the restriction drivers have been entered.
  • Set a batch to the processing status Canceled if it is no longer relevant for processing.
  • Regenerate a batch to reflect the latest configuration and authorized supply chain maps or to enter actual values for a batch that was previously canceled.
  • Choose a worklist item to open the batch details.

Here we have an example of such detailed screen, in which one can see that some Restriction Drivers do not have an Actual Value.

In order to enter their values, you have to click on the EDIT button on the top bar, that automatically will modify the screen

As you can see above, now the screen has

  • Edit Actual Values for each of the Restriction drivers
  • Save / Discard button.

Clicking on the "Edit Actual Values" generates then the following screen where in addition of entering actual values and their descriptions, one can also add new entries, in order to provide alternative values for the same entries.

By clicking OK the results are saved as shown in the following screen.

This is quite normal, since for externall manufactured batches, the related batch information is not provided automatically.

By clicking on "ADD" the above page provides the possibility to entering components as shown below

Component Batches

Shows a list of the component batches that are relevant for this batch.

Make sure to add any component batches and enter the missing actual values of their restriction drivers, so that the jurisdictional control check can be evaluated properly for the batch.

Here's how you add a component batch:

  1. In the header, choose Edit to go into edit mode.
  2. In the header of the Component Batches table, choose Add.
  3. Enter the Batch ID and the Material ID.
  4. Save your entries.

Once you have added all the relevant component batches, you can choose a row to enter the missing actual values for the restriction drivers of the component batch.

Here's how you remove a component batch:

  1. In the header, choose Edit to go into edit mode.
  2. In the Component Batches table, select the rows that you want to remove.
  3. In the header of the Component Batches table, choose Remove.
  4. Save your entries.

New Capabilities

With release 2411, SAP Batch Release Hub for Life Sciences provides the following additional features to support the automatic release:

Global Configuration

The decision whether to enable or disable automatic approval is a very profound one. Therefore it has to be taken with the outmost care and for this reason a global configuration change is required, with required access rights.

Release Type configuration

The automation of a batch release is achieved by enabling a specific release type. This is therefore shown in the Configure Release type screens.

Relevant Applications

All apps related with Automated Release can be found in the "Manage Release Configuration" app

Release Automation has the potential of increasing the efficiency of the Batch Release Process since as soon as all checks are passed the batch is automatically released, no human intervention is needed and therefore batches are released faster and human efforts are saved.

However, releasing a batch of product is a very sensitive activity, and particularly in the case of regulated processes some Companies might want to have a stricter control on whether such capability be enabled or not. To empower Customers ensuring the usage or non-usage of Automatic Release in SAP Batch Release Hub for Life Sciences we provide a single switch that controls if Automatic Release is enabled or not enabled for that tenant.

Users that have the role "GlobalConfigurations_Editor" (as specified in the Administration Guide → User Management → Defining and Bundling Roles) can access the Tile "Manage Release Configurations → General Settings)

By clicking on that tile ( that can also be reached from the top page by clicking on "Configuration and Responsibilities") then the "Make General Settings" will be shown as below.

Tenant Configuration

With release 2411, the "Release Automation" section has been added to SAP Batch Release Hub for Life Sciences.

If that section is not visible, you can find it under the "+…" pulldown menu item that is constructed automatically as soon as the width of the screen does not enable appropriate reading of all the items that the page gives access to.

By clicking on the "Release Automation" item, then the Release Automation make general setting will be shown as below.

The Release Automation page in the Make General Settings currently allows the appropriately granted user to

  • activate the "Enable Automated Batch Release" functionality for ALL users for ALL release decision Items managed through the specific tenant
  • disactivate the "Enable Automated Batch Release" functionality for ALL users for ALL release decision Items managed through the specific tenant
  • Inspect the History of changes for this general configuration or other general configurations
  • Download the history of changes for this general configuration or other general configurations

If "Enable Automated Batch Release" was activated, and then disactivated, the following will happen:- Release Decision Items that has been created for Release Type configured for automation will be only releasable manually- New Release Decision Items will only be releasable manually- A Release Type that was enabled for automatic release will still be valid, however the release will have to be done manually

Release Type Configuration

The Release Automation is a feature that while being enabled or disabled for a whole tenant, it applies only to the Release Decision Items of specific Release type.

As shown above, one can have different Release Types, some with automated batch release while others still requiring manual approval.

As of Release 2411, by clicking on a Release Type or by creating a Release Type, there is the new option of enabling automatic approval as shown in the next screen.

As one can see, with Release 2411 two new toggles are available in the general data settings of each Release Type:

Batch Release Without E-Signature

Controls whether a password is required when setting a release decision for batches with this release type. By default, this setting is turned off and users need to enter their password each time they set a release decision for batches with this release type. If you turn on this setting, users are not prompted to enter their password in the Set Release Decision dialog, which simplifies and speeds up the process of setting a release decision. Batches that are released without an e-signature are not recorded in the signature log.

Note

If you want to turn on Automated Batch Release for this release type, you must also turn on Batch Release Without E-Signature.

Automated Batch Release

Controls whether batches with this release type are released automatically. If you turn on this setting, batches with this release type are released automatically once all release checks are in a status with the impact Release Without Restrictions for at least 30 minutes.

Note

To use automated batch release, you also need to turn on Batch Release Without E-Signature.

What Release Decision Will Be Set?

The release decision that is set when a batch is automatically released is configured under Make General Settings →  Release Automation.

The release decision must be included in the list of allowed release decisions for this release type.

By clicking on Edit, all aspects of the Release Type might be modified, including the toggling of the Batch Release Without E-Signature and the Automated Batch Release.

If Release Decision Items have already been created that required E-Signature and had no automated Batch Release, the changing of this central feature will not affect them. Users will have to regenerate the release decision items in order for this new feature be active.

New Capabilities

SAP Batch Release Hub for Life Sciences enables faster decision taking for batch releases, relying on open API through which customer can integrate the relevant data. There are situations, however, where the granularity of the digitalisation has not yet reached the level of detail enabling the use of those API. In most of these cases, the Qualified Person needs to gain evidence from documents, a tedious and error prone process.

SAP Batch Release Hub for Life Sciences supports such scenarios through the „Custom Release Check", that enable customer performing checking activities that must be completed manually, without a connected source system.

AI-Assisted Custom Release Check

While Custom Release Checks has been available in SAP Batch Release Hub for Life Sciences since its first release, with release 2411 we enable customers in automatically generating knowledge from the documents that they choose to use to provide the evidence of the specific manual release check.

Instead of reading through all the documents by yourself, Artificial Intelligence is generating the proposed answers for the specific check. The Qualified Person (QP) acts as reviewer and does not need to do this tremendous manual work anymore. Hence the required time for manual processing will go down to a minimum.

AI-Assisted Custom Check Activities

Now that the use case for the Custom Relese Check with AI support has been described we will describe how to enable it, and how to use it.

Purchase of AI Units

As specified in Administration Guide for SAP Batch Release Hub for Life Sciences you need to purchase of AI units. In order to support you in the sizing of the purchase, you have simply to estimate how many AI predictions will be required per year. In simple terms, if for a release decision item a Qualified Person needs to extract five different types of information , that would result in five AI requests.To facilitate purchasing, AI units are sold in blocks and then through the available online calculator one can simply calculate how many blocks would be sufficient for the year.All legal purchasing details are beyond the scope of this tutorial and customer is recommended to consult with the corresponding Account Executive.For the sizing one could take the same number of batches for which SAP Batch Release Hub for Life Sciences has been licensed, and then estimating the % of those batches that wouldrequire manual document review from previous years.

Activation of the AI Feature

To activate the AI feature, a ticket on component IS-LS-BRH-APP is required.Upon verification that indeed the AI units have been properly purchased, then the BTP account will be enabled to use this feature and at this point the following steps need to be performed by the user.

Enable AI Assisted Custom Check

Artificial Intelligence has the potential of increasing the efficiency of the Batch Release Process in a variety of ways.However, different Companies have different policies w.r.t. use of Artificial Intelligence also for regulated processes.To empower Customers ensuring the usage or non-usage of Artificial Intelligence in SAP Batch Release Hub for Life Sciences we provide a single switch that controls if AI is enabled or not enabled for that tenant.

Configure Custom Check for AI support

In release 2411, Artificial Intelligence is restricted to the Custom Release Check, and specifically it increase the efficiency of the Qualified Person inchoosing the appropriate value for a custom release check through supporting evidence contained in a document attached to the specific Release Decision instance. Therefore an essential activity is the configuration of a Custom Release Check for using AI.

Use AI-Assisted Custom Check

The Release Decision Item is the ultimate focus where AI is applied to support the appropriately configured Custom Release Check with AI.In this part of the tutorial we are going to show the practical use of such feature.

Enable AI Assisted Custom Check

Artificial Intelligence has the potential of increasing the efficiency of the Batch Release Process in a variety of ways.However, different Companies have different policies w.r.t. use of Artificial Intelligence also for regulated processes. To empower Customers ensuring the usage or non-usage of Artificial Intelligence in SAP Batch Release Hub for Life Sciences we provide a single switch that controls if AI is enabled or not enabled for that tenant.

Users that have the role "GlobalConfigurations_Editor" (as specified in the Administration Guide → User Management → Defining and Bundling Roles) can access the Tile "Manage Release Configuration → General Settings)

By clicking on that tile ( that can also be reached from the top page by clicking on "Configuration and Responsibilities") then the "Make General Settings" will be shown as below.

With release 2411, the "AI" section has been added to SAP Batch Release Hub for Life Sciences.

If that section is not visible, you can find it under the "+…" pulldown menu item that is constructed automatically as soon as the width of the screen does not enable appropriate reading of all the items that the page gives access to.

By clickin on the "AI" item, then the AI make general setting will be shown as below.

The AI page in the Make General Settings currently allows the appropriately granted user to

  • activate the "Enable AI-Based Proposals" functionality for ALL users for ALL release decision Items managed through the specific tenant
  • disactivate the "Enable AI-Based Proposals" functionality for ALL users for ALL release decision Items managed through the specific tenant
  • Inspect the History of changes for this general configuration or other general configurations
  • Download the history of changes for this general configuration or other genral configurations

If "Enable AI-Based proposals" was enabled, and then disabled, the following will happen:a) All values provided until that point will be kept, however new proposals will not be generatedb) Proposals that have been requested while the AI-based proposals function was enabled will be completed and user will be able to choose it c) New proposals will not be generated

Configure Custom Check for AI support

The procedure required to configure a custom release check for using AI is very simple and well described in the official HELP.

Steps to configure a Custom Release Check for AI support

  1. From the Configuration and Responsibilities tab open the "Manage Release Configurations" app
  2. Under Configure Release Checks → Release Checks, create a new release check using the release check type Custom Release Check.
  3. Add the allowed release check statuses for the release check.

Steps to configure a Custom Release Check for AI support

In the above picture one can see that there could be one or more aspects you want to include in this specific custom release check. For this reason we provide a Checklist. All the items in the checklist make use of the information that is uploaded in the batch-specific attachments.The AI technology will process each of the items and generate a proposal addressing the specified conditions for acceptance.To do so the following steps needs to be performed:

  1. Create checklist items for the release check, specifying an ID and description for each item.Each item is shown as a step. You can use the arrows to change the sequence of steps
  2. Specify whether an AI-based proposal can be generated for the checklist item result.If you enter Yes, the AI-based Generate Result button is enabled for this checklist item in the My Release Decisions and My PCN Release Decisions apps. If you enter Yes, you must also enter a Condition for Acceptance because the AI generation uses the condition for acceptance as the basis for proposing a sensible result. If you enter No, the Generate Result button is not enabled for this checklist item in the My Release Decisions and My PCN Release Decisions apps, and users must manually enter a result for the checklist item.
  3. Enter a condition for acceptance to describe what's required to complete the checklist item

Custom Release Check Configuration

Let us consider a situation in which a custom release check has been created, enabled by AI, and assigned to a specific release type as shown above.

That Custom Release Check (that as all Custom Release Checks has to be fulfilled *manually* ) has five (5) checklist items, all of which are enabled for being used by AI to generate a proposal.

Note

Please note carefully how the "condition for acceptance" are formulated.

The text therein contained is used by the AI technology, and while it is not directly used as a "prompt", it does influence the quality of the prediction.

  1. If the quality of the prediction does not match your needs, there are several different reasons for that, and the only way the user can influence that are- appropriate choice of documents that contain the "answer" to the condition for acceptance. If the documents that are attached do not refer to the specific release decision item, since for example are related to other Batch / Material / Plant, then their use could generate faulty information. The choice of which document to upload is very important and therefore strongly influence the efficiency gain that the tool promises.- quality of the documents provided For example, if the document consists of scanned pages, however there is no "searchable text" inside it, currently the system has more difficulty in handling that. A better way would be to have the scanned document pre-processed by tools that make it "searchable" (also called Optical Character Recognition). An even better way would be to use PDF documents that are natively generated (e.g. as export from Microsoft Word), or directly Word or Text documents.- formulation of the Condition for acceptance The AI generation uses the condition for acceptance as the basis for proposing a sensible result. Here are some tips for writing a condition for acceptance that works well with the AI-assisted custom release check
  2. Word the condition precisely and concisely. Do not use lengthy descriptive text.
  3. Avoid using jargon. Use simple, accessible language.
  4. Split complex conditions into multiple checklist items.
  5. Ensure the condition matches your intention and required output, for example instead of
  6. "Batch number is documented"With this wording, AI will check that the batch number is present but might not necessarily extract it
  7. "Extract the batch number"With this wording, AI will check that the batch number is present and return it if it's available.
  8. Keep in mind that AI does not have access to real-time information.For example, suppose you enter the condition for acceptance as "Check that manufacturing date is in the future". AI can find the manufacturing date if it's documented in the attachment, but it is not able to compare it to the current date.

Use AI-Assisted Custom Check

Here we have a case where a Release Decision Item is assigned to a user, and is about Batch ID BCL0101, Material ID MAT1 and Plant ID 1710.

This Release Decision Item is for a Release Type of "Technical Release for Internal Production", that itself has been configured with the previously defined "Custom Release check for Tutorial."

At this point we are going to use the application and decide if this Custom Release Check, that itself contains a list of topics to be resolved manually, is going to be successful with the documents we have available and with the conditions for acceptance as formulated previously.

The first step is therefore to click on the "Custom release check for tutorial" specific for this Release Decision Item.

Here it is how the Custom Release Check looks like, for the specific Batch / Material and Plant.

If AI would not have been enabled, then the user would have had to look at each of the items, and then decide by her/his own or based on some evidence .

Through the use of AI, one is "forced" to upload evidence , and that is the first step we are going to show now.

Here I have uploaded an Investigation report, a certificate of analysis and an Investigation Lot report. I simply drag and dropped them.

As you can see their processing status is "Not AI-Relevant". That is the "default".

AI is a high resource consuming activity, and it could be that some of the documents you want to upload cannot or should not be processed by AI. For example, a large users manual could be useful to be uploaded for reference purposes, but it might not be relevant for a specific task in the check.

To make use of those documents in answering the "conditions for acceptance" they must at first be *set as relevant" and this happens very easily by clicking on the left checkbox item and setting them as relevant by clicking on the "Set as Relevant" text.

As said previously, the choice of the documents and use of AI are important decisions already and here the system wants to make you really sure you want to have them used.

To use the documents for addressing the *Condition for Acceptance" the AI needs to process those documents, and apply a variety of computationally intensive techniques on them.

Therefore after the initial AI Processing Status "not relevant", they became "AI-Relevant (Getting Ready) and after few minutes they are "AI-Relevant".

At this point we can proceed with our work and inquire the individual steps one by one.

Let's address the first step, or in other words the step 1 with Item ID "CheckTests".

Click on the item, then click on "Generate Result" will then raise a window requesting which documents to use.

In this example I am selecting all of the documents (although only the "Certificate of Analysis.pdf" should be selected ) and then I click on "generate.

Here are the documents that I used.

After few seconds, the grey box is filled with text, and then by clicking on the REVIEW button one comes to a scrollable text shown above (the scrollbar is only visible if one tries to scroll the text).

There one can notice that

  1. It properly detected that only "Certificate of Analysis" and "Visual Inspection" were relevant, while the "Investigation Lot" had no relevant information
  2. It properly identified the test name, the description if available
  3. It concluded that "All tests are clearly documented with their results and assessments "
  4. One can precisely check the documents and at which page in the documents the result was shown

At this point however the system requests you to review the listed documents to check manually, whether the generated result matches the information present in the documents.

After opening the documents at the given page, you can quickly verify the information.

To complete the review process, the system requests you to click on "OK" or "Cancel".

If you click on OK…

Then the final decision needs to be taken:

  1. Acceptthis allows you to approve or reject the proposal.
  2. Discardthis let you proceed simply manually
  3. Revisethrough revise one can reprocess the query and see if the system generates something else.

Here is the final result, in case of Accepting the proposal and approving the item.

For all other items one would have to repeat the same operations, and always astonish how good the system is performing .

Summary

At this point you should be able to:

  • Understand when to use AI Assisted Custom Release Check
  • Enable AI Assisted Custom Release Check
  • Configure Custom Release Check for AI support
  • Use AI-assisted Custom Release Check

Log in to track your progress & complete quizzes