SlackJD Edwards World (IBM i) Agent view

How to add Slack alerts and commands to JD Edwards World

Short answer

Build a small Slack app that receives IBM i events from data queues or journals, posts interactive messages, and answers slash commands from read-only DB2 for i queries. Approvals and updates return through a staging table and a controlled World job.

Slack is less common than Teams in the older manufacturing base, but plenty of distribution and engineering-led companies run on it, and their World system is exactly the kind of back-end nobody opens unless they must. The result is that answers live in the IBM i and conversations live in Slack, with a person copying between them.

Slack's strength for this job is its simple developer model: slash commands, interactive blocks and Socket Mode, which lets an app inside a private network receive events without a public inbound endpoint. That matters for an IBM i shop that does not want to open firewall holes.

This page describes a design built around that strength, including what the IBM i can supply, how to keep write-back safe, and where the effort really goes.

What teams use it for

Slash command for item and stock lookup

Type /stock 4471 and get on-hand, allocated and on-order quantities by branch/plant from a read-only query of the item location data.

Order status for customer service

Use /order with a sales order number to return status, ship date, carrier and any hold code, so support staff stop asking for terminal access.

Late shipment alerts to a channel

Post when an order passes its promised date without ship confirm, tagging the account owner and linking to the order lookup.

Buyer exceptions thread

Create one thread per MRP action message for critical items, so buyers discuss and resolve the exception in context.

Inventory adjustment approvals

Send an interactive message for cycle count variances above a threshold; a supervisor approves before a World adjustment job runs.

Weekly open-order summary

Post a scheduled digest of backlog by customer and week to a sales channel from a saved query.

JD Edwards World (IBM i) integration surface

  • DB2 for i over JDBC (jt400) or ODBC for read-only lookups; table and column names vary with release and customizations, so confirm against your data dictionary.
  • Data queues and journal receivers for event capture, either from a trigger program or from a journal reader that polls changes.
  • The IBM i job scheduler for periodic summaries and for a staging-table poller.
  • World interactive-batch or batch input programs as the sanctioned way to apply a change; direct file updates skip edits and audit.
  • Spooled output or IFS files for attaching a report to a Slack message after a conversion to PDF or CSV.
  • Slack side: slash commands, Block Kit interactive messages, Socket Mode or Events API, OAuth scopes, and signing secrets.

How it works

  1. 1

    Create the Slack app

    Define slash commands, a bot user and the minimum OAuth scopes. Prefer Socket Mode if you do not want an inbound public URL.

  2. 2

    Stand up the service tier

    Run a small service on a server with network access to the IBM i. It holds the Slack tokens, the query catalogue and the staging logic.

  3. 3

    Define a query catalogue

    Write each slash command as a parameterized SQL statement with a result format. This avoids users or models producing unreviewed SQL.

  4. 4

    Connect event feeds

    Add triggers or a journal reader for a few high-value events such as order holds and late shipments, writing keys to a data queue the service drains.

  5. 5

    Build interactive messages

    Use Block Kit buttons with an order key and a version stamp. On click, verify the Slack signature and the user's mapped World profile.

  6. 6

    Stage and apply

    Write the decision to a staging table. A scheduled World job revalidates and posts, then the service edits the Slack message to show the result.

Example flows

Cycle count variance approval

Trigger: A count entry creates a variance above the tolerance for a lot-controlled item.

  1. The variance is written to a staging table by the count program or a trigger.
  2. The service posts a message to the inventory channel with item, location, system quantity and counted quantity.
  3. A supervisor clicks Approve or Recount.
  4. A World job posts the adjustment or opens a recount task.

Result: Variances are resolved the same shift with a visible approver name.

Customer service order lookup

Trigger: A support rep types /order 482913 in Slack.

  1. Slack sends the command to the service over Socket Mode.
  2. The service runs the named order query against DB2 for i with the order number bound as a parameter.
  3. It replies with a compact block: status, promised date, ship date, carrier, hold code.

Result: Reps answer customers without asking planners to look it up.

Keeping data on-prem

Slack is a hosted service, so treat it like any external channel: keep the IBM i and the service on your network, use Socket Mode so no inbound path is required, and send only what the recipient is allowed to see. If a language model turns free-text questions into catalogue queries, host an open-weight model locally so your order and customer data is not sent to a third party. Where Slack itself is not acceptable for a program, the same service layer can front a different chat tool or an internal web page.

Security checklist

  • Verify the Slack signing secret on every request and store tokens in a secrets manager.
  • Limit the bot to the channels it needs and do not post customer pricing in shared channels.
  • Map Slack user IDs to World profiles and check authority at apply time, not at click time.
  • Run lookups under a read-only DB2 profile with row-level limits where practical.
  • Retain logs of commands and decisions with the Slack user ID for audit.

Ways to get it done

Use a no-code automation tool with an IBM i connector

Effort: Days to a couple of weeks, with limited control over approvals and audit.

Fits simple notifications where a vendor connector for DB2 for i exists and licensing is acceptable.

Build a Slack app in-house

Effort: A few weeks for lookups and alerts, more for governed approvals.

Fits teams with a developer who knows JDBC and Slack's SDKs and a stable list of commands.

Engage a partner such as Netray

Effort: A short pilot on two or three commands, then extended after review.

Fits those who want a vetted query catalogue, a local model for free-form questions, and write-back design for World.

Pitfalls

  • !Free-form SQL from users or models is a risk; keep to a catalogue or review generated SQL before it runs.
  • !Slack retains messages by workspace policy, so a pricing detail posted once may live for years.
  • !Slash commands time out after a few seconds; acknowledge immediately and post the result asynchronously for slow queries.
  • !Triggers on high-volume files must stay light, otherwise order entry slows.
  • !A bot token that posts to every channel is easy to misuse; scope it narrowly.

Frequently asked questions

Does Slack have a native JD Edwards World app?

No official one exists that I would rely on for World. The practical route is a custom Slack app with a service that queries DB2 for i and captures IBM i events. Third-party IBM i vendors may offer connectors, but check their approval and audit features.

Can we avoid opening the IBM i to the internet?

Yes. Keep the service on your network and use Slack's Socket Mode so it opens an outbound connection to Slack. The IBM i is only reachable from the service host over your internal network, which is a much smaller attack surface than a public webhook.

Can Slack users update World records?

They can request updates, which are staged and applied by a World job after revalidation. Allowing the Slack side to write directly to files is not recommended because it bypasses World's edits, security and audit fields.

What data should never be posted to Slack?

Anything your customer contracts, export rules or internal policy restrict: pricing, margins, controlled technical data and personal information. Post identifiers, statuses and dates, with a link to a protected lookup page for detail.

Can an LLM power the /ask command?

Yes, and it works best when the model chooses from a catalogue of vetted queries or proposes read-only SQL for review. A locally hosted open-weight model keeps queries and results inside your network, and answers should always show the query used.

Want Slack working on your JD Edwards World (IBM i)?

A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.

Get a free assessment