# Remote configuration

The remote configuration stores configurations that affect only the fulfillmenttools apps and clients, such as Backoffice or the Operations app. These configurations don't change behavior in the backend.

The remote configuration is a key-value store. It allows for storing different values and value types, each identified by a unique `key`. Each entry can also include a specific `scope` that restricts its availability to certain user groups or clients. This ensures that configurations are only available in the intended context.

{% hint style="warning" %}
**Attention**: This filter is not an authorization. Every user can call every remote configuration.
{% endhint %}

## Available remote configurations

### Web clients

{% tabs %}
{% tab title="Backoffice" %}
Group: `BACKOFFICE`

| Key                                  | Type      | Example | Effect                                                                                                                                                                                                            |
| ------------------------------------ | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHANNEL_ALLOCATION_VIEW_ENABLED`    | `BOOLEAN` | `true`  | Makes the channel inventory tab visible in the stock overview.                                                                                                                                                    |
| `INBOUND_VIEW_ENABLED`               | `BOOLEAN` | `true`  | Makes the inbound view visible in the facility view.                                                                                                                                                              |
| `PROCESS_DETAILS_EDIT_ORDER_ENABLED` | `BOOLEAN` | `true`  | Allows editing orders in the order view.                                                                                                                                                                          |
| `SENTRY_ENABLED`                     | `BOOLEAN` | `true`  | If set to `false`, the system stops tracking errors in `pre` and `prd` tenants. By default, error and analytics data are tracked on all tenants.                                                                  |
| `SERVICE_JOBS_ENABLED`               | `BOOLEAN` | `true`  | Makes the service tab visible. The `custom-service` feature must also be active.                                                                                                                                  |
| `SERVICE_VIEW_ENABLED`               | `BOOLEAN` | `true`  | Makes the service tab visible in the task overview. The `custom-service` feature must also be active.                                                                                                             |
| `STOCK_MODIFICATION_ENABLED`         | `BOOLEAN` | `true`  | Allows adding products and stock at a location and changing stock in the storage location view. It also allows changing stock on the stock information card and storage location card in the listing detail view. |
| `STORAGE_LOCATION_VIEW_ENABLED`      | `BOOLEAN` | `true`  | Makes the storage location view visible in the facility view.                                                                                                                                                     |
| {% endtab %}                         |           |         |                                                                                                                                                                                                                   |

{% tab title="Operations web app" %}
Group: `OPERATIONS_WEB_APP`

<table><thead><tr><th>Key</th><th>Type</th><th>Example</th><th>Effect</th></tr></thead><tbody><tr><td><code>NEW_PACKING_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>Uses the new packing process.</td></tr><tr><td><code>NEW_PRINT_OVERVIEW_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>Uses the new print overview.</td></tr><tr><td><code>OPERATIONS_POLLING_INTERVALS</code></td><td><code>JSON</code></td><td><pre><code>{
  "pickingOverview": 30000,
  "packingOverview": 30000,
  "restowOverview": 30000,
  "linkedServiceJobsOverview": 30000,
  "serviceJobsOverview": 30000,
  "handoverOverview": 30000
}
</code></pre></td><td>Defines custom polling intervals in milliseconds. The client defaults any value below 5000 to 5 seconds. If a specific view's interval is not defined, the system uses its default value. Only specify the keys for the intervals to be changed.</td></tr><tr><td><code>PREFILL_AMOUNT_HANDLER</code></td><td><code>JSON</code></td><td><code>{"packing": "true"}</code></td><td>Within the new packing view, the item count in the amount handler is prefilled (e.g., <code>5/5</code>) and does not need to be selected by the user. By default, the value is not prefilled (e.g., <code>0/5</code>).</td></tr><tr><td><code>SERVICE_JOBS_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>Makes the service tab visible. The <code>custom-service</code> feature must also be active.</td></tr><tr><td><code>SERVICE_VIEW_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>Makes the service tab visible in the task overview. The <code>custom-service</code> feature must also be active.</td></tr><tr><td><code>SHORTPICK_REASON_MANDATORY</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>If set to <code>true</code>, a single order pick can only be completed if a short-pick reason has been selected for each short-picked item.</td></tr><tr><td><code>SINGLE_PACKING_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>Enables a simplified packing process that does not allow packing multiple packages, as only one packing target container is created.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Mobile clients

{% hint style="info" %}
Some mobile configurations are only available from a specific app version onwards. Check the **Availability** column for version requirements.
{% endhint %}

{% tabs %}
{% tab title="Store Operations app" %}
Group: `OPERATIONS_MOBILE`

<table><thead><tr><th>Key</th><th>Type</th><th>Example</th><th width="139.12109375">Availability</th><th>Effect</th></tr></thead><tbody><tr><td><code>HOME_COMPLETED_AS_TASKS</code></td><td><code>BOOLEAN</code></td><td><code>TRUE</code></td><td>v4+</td><td>Defaults to <code>true</code> if not configured. Defines whether the home screen widget data for the <strong>Completed facility/user</strong> is shown as tasks or orders.</td></tr><tr><td><code>MOBILE_POLLING_INTERVAL_PARCEL_LABEL</code></td><td><code>INTEGER</code></td><td><code>10</code></td><td>v4+</td><td>Defaults to 10 seconds if not configured. Defines custom polling intervals (in seconds) for parcel label creation in the app's packing and printing process.</td></tr><tr><td><code>MOBILE_POLLING_INTERVAL_RESTOW</code></td><td><code>INTEGER</code></td><td><code>60</code></td><td>v4+</td><td>Configures the update interval in seconds for open restow items while the screen is active. The minimum value is 5. Values less than 5 are ignored. The default is <code>60</code>.</td></tr><tr><td><code>ORDER_SWAP_FILTER_SEQUENCE</code></td><td><code>BOOLEAN</code></td><td><code>FALSE</code></td><td>v4+</td><td>Defaults to <code>false</code> if not configured. If set to <code>true</code>, the status and type filter sequence will be swapped in the order overview screen.</td></tr><tr><td><code>PACKING_CONTAINER_TYPE_SCAN</code></td><td><code>BOOLEAN</code></td><td><code>FALSE</code></td><td>v4+</td><td>Defaults to false if not configured. Controls whether the container type selection in the packing process displays a screen to scan a container (camera or laser scanner). Otherwise, the app defaults to showing only the manual selection screen.</td></tr><tr><td><code>PACKING_ITEMS_AUTO_INCREMENT</code></td><td><code>BOOLEAN</code></td><td><code>FALSE</code></td><td>v4+</td><td>Defaults to false if not configured. Controls whether the item selection screen in the packing process automatically counts all items up to the maximum value.</td></tr><tr><td><code>PICKING_PREPARATION_ENABLED</code></td><td><code>BOOLEAN</code></td><td><code>TRUE</code></td><td>v8+</td><td>Defaults to <code>TRUE</code> if not configured.<br><br>Defines whether the picking preparation screen is shown (this screen shows a calculated proposal of how many containers should be used for the PickJob and appears at the beginning of the picking flow).</td></tr><tr><td><code>PICKING_SCANNING_RULE</code></td><td><code>STRING</code></td><td><code>ARTICLE</code></td><td>v4+</td><td>Value can be one of <code>ARTICLE</code> (default), <code>LOCATION</code>, <code>ARTICLE_LOCATION</code>, or <code>LOCATION_ARTICLE</code>. When the value is <code>ARTICLE</code>, only the article's barcode can be scanned during picking. For <code>LOCATION</code>, only the code of the storage location in which the item is placed can be scanned. For <code>ARTICLE_LOCATION</code>, a scan is successful only if the article's code is scanned first, followed by the location's code. For <code>LOCATION_ARTICLE</code>, a scan is successful only if the location's code is scanned first, followed by the article's code.</td></tr><tr><td><code>PICKING_SCANNING_TYPE</code></td><td><code>STRING</code></td><td><code>SCAN_NOT_REQUIRED</code></td><td>v4+</td><td>Value can be one of <code>SCAN_NOT_REQUIRED</code> (default), <code>MUST_SCAN_FIRST</code> or <code>MUST_SCAN_EACH</code>. When value is <code>SCAN_NOT_REQUIRED</code> then scanning is optional during picking. For <code>MUST_SCAN_FIRST</code> a line item needs to be successfully scanned at least one time — afterwards, the item count can be increased via the number input field without needing to scan the item again. For <code>MUST_SCAN_EACH</code> every single item needs to be scanned during picking.</td></tr><tr><td><code>PICKING_STORAGE_LOCATION_ASSIGNMENT</code></td><td><code>STRING</code></td><td><code>DISABLED</code></td><td>v6+</td><td><p>Defines whether containers must be assigned to a storage location during picking and whether the corresponding screen is displayed.</p><p>Defaults to <code>DISABLED</code> if not configured.</p><p>If set to <code>MANDATORY</code>, users must assign a storage location to every container before proceeding.</p><p>If set to <code>OPTIONAL</code>, the storage location assignment screen is shown, but users can skip it without assigning all containers to a location.<br><br>Possible values: <code>DISABLED</code>, <code>OPTIONAL</code>, <code>MANDATORY</code></p></td></tr><tr><td><code>POLLING_INTERVAL_ORDER</code></td><td><code>INTEGER</code></td><td><code>10</code></td><td>v4+</td><td>Defaults to 10 seconds if not configured. Defines custom polling intervals in seconds for refreshing the orders.</td></tr><tr><td><code>POLLING_INTERVAL_PICKING_STATUS_UPDATES</code></td><td><code>INTEGER</code></td><td><code>5</code></td><td>v4+</td><td>Defaults to 5 seconds if not configured. Defines custom polling intervals in seconds for status updates while processing PickJobs.</td></tr><tr><td><code>SHORTPICK_REASON_MANDATORY</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td>v4+</td><td>If set to <code>true</code>, a single order pick can only be completed if a short-pick reason has been selected for each short-picked item.</td></tr><tr><td><code>ENABLE_EAN_CHECK_DIGIT_CALCULATION</code></td><td><code>BOOLEAN</code></td><td><code>true</code></td><td><strong>DEPRECATED</strong> — before v5</td><td>Enables the app to automatically calculate the check digit for EAN-8 and EAN-13 barcodes if the scanning device doesn't send the complete code. For camera scans or devices that send the complete code, this setting has no effect.</td></tr></tbody></table>
{% endtab %}

{% tab title="Operations app" %}
Group: `OPERATIONS_ANDROID`

| Key                                    | Type      | Example             | Availability                 | Effect                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------------------- | --------- | ------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `android_calc_ean_check_digit`         | `BOOLEAN` | `true`              | v157+                        | Enables the app to automatically calculate the check digit for EAN-8 and EAN-13 barcodes if the scanning device doesn't send the complete code. For camera scans or devices that send the complete code, this setting has no effect.                                                                                                                                                                                                                                                                                                           |
| `android_use_picking_focus`            | `BOOLEAN` | `true`              | v157+                        | If `true`, the user can only scan the item that's currently in focus during the picking process. If `false`, the user can scan any item in the list. The default value is `true`. This setting requires `android_use_new_picking` to be enabled and has no effect for pick jobs that require scanning a storage location or have barcode validation disabled.                                                                                                                                                                                  |
| `MOBILE_POLLING_INTERVAL_PARCEL_LABEL` | `INTEGER` | `10`                | v164+                        | Defaults to 10 seconds if not configured. Defines custom polling intervals, in seconds, for parcel label creation during the app's packing and printing process.                                                                                                                                                                                                                                                                                                                                                                               |
| `MOBILE_POLLING_INTERVAL_RESTOW`       | `INTEGER` | `60`                | v154+                        | Configures the update interval in seconds for open restow items while the screen is active. The minimum value is 5. Values less than 5 are ignored. The default is `60`.                                                                                                                                                                                                                                                                                                                                                                       |
| `PACKING_CONTAINER_TYPE_SCAN`          | `BOOLEAN` | `FALSE`             | v164+                        | Defaults to false if not configured. Controls whether the Container-Type Selection in the App Packing Process will display a screen to scan a container (camera or laser scanner). Otherwise, the app defaults to showing a manual-selection-only screen.                                                                                                                                                                                                                                                                                      |
| `PACKING_ITEMS_AUTO_INCREMENT`         | `BOOLEAN` | `FALSE`             | v164+                        | Defaults to false if not configured. Controls whether the **Item Selection Screen** in the app packing process automatically counts all items up to the maximum value.                                                                                                                                                                                                                                                                                                                                                                         |
| `PICKING_SCANNING_RULE`                | `STRING`  | `ARTICLE`           | v165+                        | Value can be one of `ARTICLE` (default), `LOCATION`, `ARTICLE_LOCATION`, or `LOCATION_ARTICLE`. When the value is `ARTICLE`, only the article's barcode can be scanned during picking. For `LOCATION`, only the code of the storage location in which the item is placed can be scanned. For `ARTICLE_LOCATION`, a scan is successful only if the article's code is scanned first, followed by the location's code. For `LOCATION_ARTICLE`, a scan is successful only if the location's code is scanned first, followed by the article's code. |
| `PICKING_SCANNING_TYPE`                | `STRING`  | `SCAN_NOT_REQUIRED` | v165+                        | Value can be one of `SCAN_NOT_REQUIRED` (default), `MUST_SCAN_FIRST`, or `MUST_SCAN_EACH`. When the value is `SCAN_NOT_REQUIRED`, then scanning is optional during picking. For `MUST_SCAN_FIRST`, a line item needs to be successfully scanned at least one time — afterward, the item count can be increased via the number input field without needing to scan the item again. For `MUST_SCAN_EACH`, every item must be scanned during picking.                                                                                             |
| `SHORTPICK_REASON_MANDATORY`           | `BOOLEAN` | `true`              | v157+                        | If set to `true`, a single order pick can only be completed if a short-pick reason has been selected for each short-picked item.                                                                                                                                                                                                                                                                                                                                                                                                               |
| `android_native_printing_enabled`      | `BOOLEAN` | `true`              | **DEPRECATED** — before v164 | Allows selecting the native Android printing interface when printing documents.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `android_use_new_load_units`           | `BOOLEAN` | `true`              | **DEPRECATED** — before v165 | Enables the selection of load units during the picking process.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `android_zebra_printing_enabled`       | `BOOLEAN` | `true`              | **DEPRECATED** — before v164 | Allows selecting Zebra printers directly from the network when printing documents.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| {% endtab %}                           |           |                     |                              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

{% tab title="Returns app" %}
Group: `OPERATIONS_KMP`

| Key                             | Type      | Example | Availability | Effect                                                                                                                                                   |
| ------------------------------- | --------- | ------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `return_trigger_review_enabled` | `BOOLEAN` | `true`  | v20+         | If `true`, the user can select a checkbox for each article in an `ItemReturn` to indicate it needs further review. If `false`, the checkbox isn't shown. |
| {% endtab %}                    |           |         |              |                                                                                                                                                          |
| {% endtabs %}                   |           |         |              |                                                                                                                                                          |

## Creating a remote configuration

{% hint style="warning" %}
We recommend not storing sensitive data in the remote configuration. Any logged-in user can read and write this data, and it's not stored encrypted.
{% endhint %}

```http
POST https://{projectId}.api.fulfillmenttools.com/api/remoteconfigs
```

The following example shows the payload for creating a remote configuration.

```json
{
    "key": "SHOW_RETURN_SECTION",
    "value": false,
    "valueType": "BOOLEAN",
    "groups": [
        "FULFILLMENT_APPLICATION",
        "BACKOFFICE"
    ],
    "scopes": [
        {
            "id": "SCOPE-ID-0001",
            "facilityRefs": [
                "FACILITY-ID-001"
            ],
            "userRefs": [
                "USER-ID-001",
                "USER-ID-003"
            ]
        }
    ]
}
```

## Retrieving remote configurations

The `GET` endpoint provides filter parameters to retrieve specific configurations based on the use case. For instance, to get configurations applicable to a specific user and group, the `userId` and `groups` query parameters can be combined.

An example is retrieving all configurations for user `USER-ID-003` that belong to the `FULFILLMENT_APPLICATION` group by using the query parameters `userId=USER-ID-003` and `groups=FULFILLMENT_APPLICATION`.

```http
GET https://{projectId}.api.fulfillmenttools.com/api/remoteconfigs
```


---

# 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.fulfillmenttools.com/documentation/by-pillar/store-operations/remote-configuration.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.
