# Disabling and hiding fields on forms using BPM Directives

BPMs can be created in Kinetic to control and configure behaviour in EKW. This approach enables organisations to adapt EKW to their specific needs without modifying the core application, supporting both flexibility and maintainability.

EKW uses the Kinetic API, and BPMs are configured on specific API methods. Therefore the first step to configuring EKW with BPMs is to identify the endpoints which need to have BPMs created for.

### How to identify the endpoint to create a BPM for

As a basic example lets configure the PO Receipt in EKW so that the warehouse code is set to "test" when the form first opens.

1. Use the System Log in EKW to view REST calls being made:![image](https://www.epiusers.help/uploads/default/original/3X/c/5/c5d4ae552ffc10581e345f274397c6704b125038.png)
2. Then tap the clear button to focus on new calls being made:![image](https://www.epiusers.help/uploads/default/original/3X/a/0/a0cb531d67cd5076e1700552cf9343f5b0f957fe.png)
3. Open the PO Receipt screen and open a line.
4. Re-open the System Log and press at the bottom to show the debug logs.&#x20;
5. Take note that the final call is `Erp.Bo.ReceiptSvc/GetDtlPORelInfo`:![](/files/vx9wrhbZfDsN90ZLCsJL)
6. Create a BPM which executes `ds.RcvDtl[0].WareHouseCode = "test";`![image](https://www.epiusers.help/uploads/default/original/3X/e/a/eae1259852d343674dd600568719d89309bb875c.png)
7. In EKW open the line, and see the Warehouse being populated with “test”:![](/files/uMp4ZnK5817kvX4vgo2e)<br>

### Custom logic which does apply for all users

To maintain custom logic on the same calls being made from different applications or pages in EKW versus Kinetic, you can check the BPM Context on Character20 and Character19. From EKW version 4.45.0 many calls will provide this info when making REST requests.

To check the headers which will be sent to Kinetic

From the right hand menu open **BPM Context Information:**\
![image](https://www.epiusers.help/uploads/default/original/3X/4/7/47bd559f5aa59bc0b80c9717b8bbfad46e6ad817.png)

In your BPM create an if statement (or any other logic) to check whether `Character20` is equal to EKW so that your logic does not affect other clients like Kinetic. `Character19` can be checked to control custom logic across different screens in EKW:

<figure><img src="/files/8eitmcWTg3BfsjZGpGvH" alt=""><figcaption></figcaption></figure>

### How to disable or hide inputs in an EKW form

{% hint style="danger" %}
This feature is in pilot.

It is only primarily available on "My Material Queue > Process" and some other key screens. We are actively taking feedback.
{% endhint %}

EKW will read the BPM response header Character18 for directives to control functionality in the app. These directives are delimited by "|".&#x20;

For example:

```csharp
// Always disable the "Quantity" input
callContextBpmData.Character18 = "DISABLE_QTY";

// Always hide the "From PCID" input
callContextBpmData.Character18 = "HIDE_FROM_PCID";

// Always disable the "Quantity" input and hide the "From PCID" input
callContextBpmData.Character18 = "DISABLE_QTY|HIDE_FROM_PCID";

// Disable the "Quantity" input on a particular screen
if (callContextBpmData.Character19 == "/material/my-material-queue-summary") {
    callContextBpmData.Character18 = "DISABLE_QTY";
}
```

1. From the right hand menu open **BPM Context Information**
2. The BPM Context Information modal reports that directives will be checked in response for this screen from **Erp.BO.IssueReturn.GetNewIssueReturn**&#x20;

   <figure><img src="/files/eheTTjejQhVQ619PEWEk" alt=""><figcaption></figcaption></figure>
3. Press Chartacter18 directives to view the available directives on this page:![](/files/bQG3j9DcKRFwlMs1tJSz)
4. Create a BPM with custom logic on **Erp.BO.IssueReturn.GetNewIssueReturn** to provide the directives:

   <figure><img src="/files/25segJaBLQatvAPBTYz4" alt=""><figcaption></figcaption></figure>
5. Open the screen in EKW and observe that the Quantity input is disabled and the From PCID input is hidden:

   <figure><img src="/files/EEJBXw0xQu3eDZaSd1xK" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.biscit.com/epicor-kinetic-warehouse/customizations-options/disabling-and-hiding-fields-on-forms-using-bpm-directives.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
