Predictive Inventory Management UI


From the Predictive Inventory Management page of the SBS portal, you can perform the following actions:

  • Compute replenishment proposals and track their current status
  • View all replenishment proposals for the currently selected account, application, tenant, and organization
  • For each proposal, you can view its input and output files, and processes
  • Filter, search and sort replenishment proposals.

Access

You can access the Predictive Inventory Management page of the portal as follows:

  1. Sign in to the SBS Portal. During the sign-in process, you will be prompted to select the account, app, and tenant where you are entitled to sign in.
  2. Click Predictive Inventory Management in the left hand-side menu.
  3. If applicable, select the organization from the drop-down list at the top of the page.

To interact with the Predictive Inventory Management service, you can use either the Web UI or a GraphQL interface. You can switch at any time between the two interfaces by clicking the switch displayed at the top of the page:

Switch between Web and GraphQL

View replenishment proposals

After you access the Predictive Inventory Management UI, the replenishment proposals stored in SBS for the selected account, application, and tenant are displayed in the upper grid. To view details about a particular replenishment proposal, click the respective row in the grid. This loads all processes and files of that proposal in the lower grid, for example:

Predictive Inventory Management UI

Replenishment proposal structure

The table below shows the replenishment proposal fields.

Field Description
ID The unique identifier of the replenishment proposal in SBS.
Split by customer If true, indicates that the proposal was created with the option to split results by customer ID.
Split by industry If true, indicates that the proposal was created with the option to split results by industry code ID.
Target month The month for which the replenishment proposal was computed.
Created at The date and time when the replenishment proposal record was created.

Process structure

A replenishment proposal may have multiple processes. A new process is created every time the proposal is computed (through a call to computeReplenishmentProposal mutation). A proposal’s process has the following structure:

Field Description
ID The unique identifier of the process in SBS.
Status The status of the replenishment proposal. Valid values: NEW - computation has not started yet, INPROCESS - computation is in progress, DONE - computation has completed without errors, ERROR - computation has completed with errors.
Errors This fields reports errors that occurred during processing, if applicable.
Created at The date and time when the process was created.
CSV icon Click the icon to download the proposal’s result file to the local disk.

File structure

A replenishment proposal may have multiple input files. A proposal’s file has the following structure:

Field Description
ID The unique identifier of the file in SBS.
File type The type of data reported by the file. Valid values: CustomerOrders, SupplierOrders.
Name The file name.
Created at The date and time when the file was created.
Paperclip icon Click the icon to download the file to the local disk.

Filter, search, and sort replenishment proposals

To filter tax replenishment proposals by the values displayed in the grid, click the Filter Filter icon icon on the respective column header in the grid. The colour of the Filter icon on each column header denotes whether the filter is active:

To search replenishment proposals, type your search text in the Search text box available in the right-upper corner of the grid. You can use any field as search term (for example, the proposal ID).

To sort replenishment proposals, click the respective column of the grid. The arrow indicates the current sorting order.

Compute replenishment proposals

The high-level steps for computing a replenishment proposal are as follows:

  1. Obtain from your ERP system the input CSV files to be used as input.
  2. Create a replenishment proposal.
  3. Add the input CSV files to the proposal.
  4. Compute the replenishment proposal.
  5. View the computation status and download the result files.

Step 1: Obtain the input CSV files from your ERP

A replenishment proposal will need the following CSV files as input:

  1. CustomerOrders.csv
  2. SupplierOrders.csv

The file names above are just an example; the actual file names may differ. Also note that you may provide multiple files of the same type as input. For example, you may use multiple CSV files of type “CustomerOrders”.

For the expected structure of each file, see Appendix A: Input CSV Files.

Step 2: Create a replenishment proposal

To create a replenishment proposal:

  1. If applicable, select an organization from the drop-down list.

  2. In the replenishment proposals grid, click Add Add button and fill in the proposal details, for example:

    Add replenishment proposal dialog

  3. Optionally, select the Split by Customer and Split by industry options. For each option that you select, a separate result file will be generated, in addition to the default one, grouped by that category of data.

  4. Click Create. A new dialog box pops up where you can add the input CSV files to the proposal.

Step 3: Add the input CSV files

After you initiate a proposal, a dialog box pops up from where you can add the input CSV files to it.

Replenishment proposal dialog

To add input CSV files to a replenishment proposal:

  1. Click Add Add button.

  2. In the dialog box that pops up, select a file type (for example “CustomerOrders”), and then click Select CSV Files(s) to add the respective file from your hard drive.

    Upload file dialog

  3. Click Add, and be patient while the file is uploading. The upload may take several seconds to several minutes, depending on the size of the input file, and your internet connection speed.

  4. Repeat steps 1-3 for all files that should be added as input to the replenishment proposal.

Step 4: Compute the replenishment proposal

After you have added all files to the replenishment proposal, you can trigger the actual generation process.

Replenishment proposal dialog with input CSV files

To compute the replenishment proposal, click Update and Run. The dialog box closes, and you can now track the replenishment proposal status from the Processes tab.

Step 5: View the replenishment proposal status and download the result file

Whenever you compute a replenishment proposal by clicking Update and Run, a new process is added to the replenishment proposal that reports its status. Note that, if you compute the same replenishment proposal multiple times, a new process will start for each run.

To view a replenishment proposal’s processes, click a replenishment proposal record in the upper grid. The lower grid should now be populated with that proposal’s processes, if any (in the “Processes” tab). The proposal’s files can be viewed from the Files tab.

Initially, each process has the status NEW. After a short time (approx. 1 minute), the status changes to INPROCESS. This status will keep showing for as long as the proposal is being computed, which may take several minutes to several hours, depending on the size of the input files.

The Processes grid does not refresh automatically; click Refresh Refresh button to obtain the latest process status.

If validation or other errors are encountered during the computation, the process status changes to ERRORS and the actual errors are reported in the respective column.

If the replenishment proposal was computed successfully, the process status changes to DONE, and a CSV download icon becomes available. Click the icon to download the generated file.

Delete replenishment proposals, files, processes

To delete a replenishment proposal, file, or process, click the Delete Delete icon next to the respective record in the grid.

GraphQL

Query replenishment proposals

To query replenishment proposals through GraphQL:

  1. Switch to the GraphQL interface.
  2. Run the replenishmentProposals query of the Predictive Inventory Management Service, for example:
query ReplenishmentProposals ($organizationId:ID!, $filter:ReplenishmentProposalsFilter, $fileId:ID, $processId:ID) {
  replenishmentProposals(organizationId:$organizationId, filter:$filter) {
    id
    organizationId
    targetMonth
    splitByCustomer
    splitByIndustry
    files (id: $fileId) {
        id fileType name contentLength uploadUrl downloadUrl createdAt
    }
    processes (id: $processId) { 
        id 
        status
        dataRange { from to } 
        targetMonth
        errorMessages 
        productCentricResult { id name contentLength createdAt downloadUrl }
        customerCentricResult { id name contentLength createdAt downloadUrl }
        industryCentricResult { id name contentLength createdAt downloadUrl }
        totals {
           csvLines { customerOrders supplierOrders allFileLines }
        }
        createdAt
    }
    createdAt
  }
}
{
    "organizationId": "YOUR_ORGANIZATION_ID",
    "filter": {
        "createdAt": {
            "from": "2025-01-01",
            "to": "2025-12-31"
        }
    }
}

Compute replenishment proposals

For instructions about computing a replenishment proposal through GraphQL, see the Generating replenishment proposals section of the Predictive Inventory Management Service reference.

Delete replenishment proposal

To delete a replenishment from GraphQL:

  1. Switch to the GraphQL interface.
  2. Run the deleteReplenishmentProposal mutation.

An example is provided below. Make sure to replace the input data as applicable.

mutation DeleteReplenishmentProposal ($id:ID!) {
  deleteReplenishmentProposal(id:$id) {
    id
  }
}
{
  "id": "YOUR_REPLENISHMENT_PROPOSAL_ID"
}