SlackQAD Adaptive ERP Agent view

How to add Slack to QAD Adaptive ERP

Short answer

Create a Slack app that listens to QAD events, posts Block Kit messages to the right channels and returns slash commands and button clicks to QAD through QXtend or web services. Keep a small connector inside your network so QAD is never exposed to the internet.

Slack is common in the engineering, supply chain and software parts of QAD customers, particularly where a company has grown by acquisition and different plants chose different tools. Teams that live in Slack find QAD to be a separate world, and expediting still happens through direct messages like did the PO for that casting go out.

A useful Slack integration turns QAD events into conversations. A shortage on a work order becomes a thread in the line's channel where planner, buyer and supervisor can talk with the order data right there. A slash command gives a fast read of an item or order, scoped to what the user may see.

This page is about the mechanics for QAD specifically: where events come from, how Slack's Events API and interactivity map to QAD calls, and how to deal with a database that is often behind a firewall.

What teams use it for

Shortage threads per work order

When a component shortage is detected for a released work order, open a thread in the line channel with item, required quantity, on-hand, and open supply, then keep it updated.

Slash command item and order lookup

Commands such as /qad item 10-4421 or /qad po 4500123 return on-hand, open orders, status and dates, using a read-only connector.

Interactive approvals

Send requisition or PO approval requests with buttons and a modal for comments, then execute the decision in QAD.

Engineering change broadcast

Announce released ECOs and BOM changes to engineering, quality and purchasing channels with a link to the QAD record and an acknowledge reaction.

Customer shipment feed

Post shipper confirmations and exceptions for key customers to an account channel, so sales sees what logistics did without asking.

Integration health channel

Send failed QXtend documents, stuck interface records and nightly batch failures to an ops channel with enough context to retry.

QAD Adaptive ERP integration surface

  • Read access to Progress OpenEdge tables via SQL-92 ODBC/JDBC for lookups, with a dedicated read-only database user and statement timeouts to protect production.
  • QXtend inbound documents or QAD web services for executing approvals and updates, so standard QAD programs apply validation and write history.
  • QXtend outbound or database-trigger events for push; if unavailable, poll status columns or transaction history (tr_hist) with a high-water mark.
  • QAD error and interface logs, where your configuration stores failed inbound documents, for the integration health channel.
  • Slack: Events API, slash commands, Block Kit, interactivity endpoints, Socket Mode for firewalled environments, and OAuth scopes limited to the channels you use.
  • Release differences matter. QAD EE, Adaptive ERP releases and cloud tenants differ in which services are exposed, so confirm available endpoints before committing to a design.

How it works

  1. 1

    Define channel structure

    Decide which channels receive which events: per plant, per line, per commodity team. Avoid one noisy global channel. Private channels for pricing and cost data.

  2. 2

    Create the Slack app

    Request minimal scopes (chat:write, commands, and channel read only where needed). Enable interactivity and, for firewalled setups, Socket Mode so no inbound port is required.

  3. 3

    Deploy the connector

    Run it inside your network. It holds the Slack tokens, a read-only DB login and a QXtend integration user. Each slash command or button maps to a named function.

  4. 4

    Map identities

    Resolve the Slack user email to a QAD user so lookups and approvals run under that person's access. Refuse actions if no mapping exists.

  5. 5

    Implement events and de-duplication

    Detect changes, build a stable key from document and status, and update the same Slack message or thread instead of posting a new message each poll.

  6. 6

    Add approval and write-back flows

    Send Block Kit approvals, verify the Slack signature, check the request is still pending, then call QAD. Return the result into the same thread.

  7. 7

    Operate it

    Monitor failures, rate limits and unmapped users. Review channel noise monthly and retire alerts nobody acts on.

Example flows

Shortage thread for a released work order

Trigger: Planning detects a component shortage against a released work order.

  1. Connector queries the work order, component, required and available quantities.
  2. A thread starts in the line channel and tags the planner and buyer.
  3. Buyer replies with the expected supplier date using a modal.
  4. The date is saved on the thread and, after confirmation, on the open PO line.

Result: The cause, owner and date for the shortage are in one place.

Slash command for open PO lines

Trigger: A planner types /qad po 4500123 in any channel.

  1. Slack sends the command to the connector with the user identity.
  2. Connector checks mapping and plant access, then runs the PO query.
  3. It replies privately with lines, quantities and due dates.

Result: A fast answer without a QAD session, visible only to the requester.

Failed interface document

Trigger: A QXtend inbound document fails validation.

  1. The connector reads the error message and source document reference.
  2. It posts to the integration channel with a Retry button.
  3. After the owner fixes master data, Retry resubmits the document.

Result: Interface failures are handled in minutes, not found at month end.

Keeping data on-prem

A Slack integration on an on-premises QAD can be done without any inbound path to your network. Use Socket Mode, where the connector opens an outbound WebSocket to Slack, and keep the database and QXtend endpoints on private addresses. Send only what the message needs: item number, quantity, status, date. If you add AI summarisation of threads or natural-language questions, host an open-weight model in your environment so work order, cost and customer data never go to a public model service.

Security checklist

  • Use least-privilege Slack scopes and restrict the app to named channels. Review installed apps and tokens regularly.
  • Verify the Slack signing secret on every request and reject stale timestamps.
  • Enforce QAD authorisation per mapped user and block actions for users without a mapping.
  • Keep cost, price and supplier terms out of public channels and out of search-indexed workspaces where guests exist.
  • Log every command and approval with Slack user ID, QAD user and document, and retain according to your audit policy.

Ways to get it done

Slack Workflow Builder plus webhook alerts

Effort: Days to a week

You only need simple one-way notifications from scheduled QAD queries.

Custom Slack app and in-house connector

Effort: 3 to 6 weeks

You have developers, want slash commands, approvals and threaded updates, and can own the code.

Partner build with Netray

Effort: Scoped after discovery

You want these plus a private AI layer for natural-language questions and summaries, built to your QAD release.

Pitfalls

  • !Polling heavy tables such as tr_hist without a high-water mark, which slows production queries.
  • !Posting a new message per poll rather than updating a thread, which creates noise.
  • !Granting broad Slack scopes that can read private channels the app does not need.
  • !Assuming the Slack email always equals the QAD user, which fails for contractors and shared mailboxes.
  • !Not handling Slack's three-second response limit for commands, so lookups time out. Acknowledge first, then respond asynchronously.

Frequently asked questions

Is there an official Slack app for QAD?

We are not aware of a standard one that covers every Adaptive ERP release, so check with QAD and your partners for your version. Most teams build a small Slack app with a connector that uses read-only SQL for lookups and QXtend or web services for writes.

Can Slack work if QAD is hosted and we have no database access?

Yes, if your hosted environment exposes QAD web services or QXtend. You lose some ad hoc query ability, so design flows around the services available. Ask your hosting provider or QAD which endpoints and credentials are permitted before you start.

How do approvals avoid being faked?

The connector verifies Slack's signature, maps the clicking user to a QAD user, checks that the request is pending and that the user is the right approver, and then executes in QAD. A copied message or a stale button cannot approve something else.

Will this slow down our QAD system?

Not if built carefully. Use read-only accounts, indexed queries, statement timeouts and high-water marks for event polling. Avoid scanning transaction history during peak hours, and cache items that rarely change.

Should we pick Slack or Teams?

Use the tool your people already work in. The QAD side of the integration is almost the same for both, so a well-built connector can serve either. Many companies end up with Teams for approvals and Slack for engineering or software groups.

Want Slack working on your QAD Adaptive ERP?

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

Get a free assessment