Microsoft TeamsECI M1 Agent view

How to add Microsoft Teams to ECI M1

Short answer

Put a small service between M1 and Teams that reads events from M1's SQL Server data or supported interfaces, posts adaptive cards to channels or chats, and receives button clicks for approvals. Authenticate users with Entra ID and map them to M1 users so approvals respect M1's own roles.

ECI M1 customers are often Windows shops already on Microsoft 365, which means Teams is open all day while M1 is open only for the people who post transactions. Managers who approve things, sales engineers who need job status, and quality leads who want NCR alerts rarely sit in M1, so requests arrive by chat and wait.

Teams can be the front door for those people. The goal is not to replicate M1 screens in chat but to surface the few decisions and lookups that stall work: an approval, a late job, a PO waiting on a signature. Done well, the Teams side is thin and M1 remains the system of record.

What teams use it for

Purchase order approval cards

A PO over a threshold posts an adaptive card to the approver with supplier, lines, total and budget context, and Approve or Reject buttons.

Late job channel

A daily card lists jobs past their promise date by work center, so the production meeting starts from facts instead of a spreadsheet.

Quote desk handoff

When an RFQ is entered, notify estimating with customer, due date and attached drawings, and track who claimed it.

Inventory shortage alerts

Post material shortages against released jobs to the purchasing channel, with the buyer tagged by commodity code.

Ask-M1 bot

A bot answers questions such as on-hand quantity for a part or the status of a job, scoped to what the asking user may see.

Quality escalations

Nonconformance or corrective action records create a card in the quality channel with a link back to the record.

ECI M1 integration surface

  • The M1 SQL Server database, read through a reporting login or replica, as the main event and lookup source. Schema names vary by version, so build a thin view layer you own.
  • Any supported M1 web service or business-object interface in your release, which is the correct route for writing approvals back. Verify availability and licensing with ECI.
  • M1 user and security setup, which you map to Entra ID identities so the bot knows who is allowed to approve what.
  • Scheduled reports and exports as a fallback trigger when direct database polling is not allowed.
  • Attachments and linked documents on records, which can be exposed as links rather than copied into Teams.

How it works

  1. 1

    Register an Entra ID app and Teams bot

    Create the app registration, a bot in Azure Bot Service or Teams developer portal, and decide between channel posts, personal chats or both.

  2. 2

    Build the M1 event reader

    Query views for new or changed approval, job and PO records using watermarks, and queue each as a card payload.

  3. 3

    Map identities

    Maintain a table linking Entra ID user principal names to M1 user IDs and approval limits. Reject actions from unmapped users.

  4. 4

    Design adaptive cards

    Keep cards short with a deep link to the full M1 record, and use action buttons that call back to your service with a signed token.

  5. 5

    Write back through a supported path

    Approvals are posted using M1's supported interface or a controlled stored procedure, then the card is updated to show who acted and when.

  6. 6

    Monitor and audit

    Log each card sent and each action received, and alert when the reader falls behind.

Example flows

PO approval in Teams

Trigger: A purchase order requires a manager signature.

  1. Reader finds the pending PO and its approver.
  2. Adaptive card is sent to the approver's chat.
  3. Approver taps Approve; the service verifies identity and limit.
  4. Approval is posted to M1 and the card updates to Approved.

Result: POs stop waiting for someone to log into M1, and the audit trail shows who approved.

Morning late-job brief

Trigger: A scheduled time at the start of the first shift.

  1. Query lists jobs past or near due by work center.
  2. Card groups them with the blocking operation.
  3. Posted to the production channel with links to each job.

Result: The standup begins with a shared, current list.

Keeping data on-prem

M1 and its SQL Server can stay entirely on your network. The Teams bot needs a reachable HTTPS endpoint for Bot Framework messages, so host the relay in a DMZ or on a cloud VM and have it pull events through an outbound connection from the on-prem reader, rather than opening inbound access to the database. If you add an AI layer for the Ask-M1 bot, run an open-weight model locally so question text and M1 data are never sent to a public model API.

Security checklist

  • Use Entra ID single sign-on and conditional access for approvers, and verify the Bot Framework token on every incoming call.
  • Enforce M1 approval limits in the service, not only in the card UI.
  • Keep the database login read-only and the write path separate and narrow.
  • Restrict the bot to specific teams and channels and avoid posting sensitive pricing to wide channels.
  • Retain action logs so every approval can be traced to a person and time.

Ways to get it done

Power Automate with a connector or SQL Server gateway

Effort: Days to two weeks

Works for simple alerts and approvals if you have the premium connectors and an on-prem data gateway.

Custom Teams bot built in-house

Effort: Four to eight weeks

Best when you need identity mapping, limits and rich cards, and you have a .NET or Node developer.

Partner build with Netray

Effort: Scoped per workflow, typically a few weeks per phase

Suits teams that want approvals plus a grounded, on-prem Ask-M1 assistant designed together.

Pitfalls

  • !Treating a card button as authorization without checking the user's M1 role and limit.
  • !Flooding channels with every event until people mute them.
  • !Exposing the SQL Server to the bot host instead of using an outbound relay.
  • !Not handling an approval that was already changed in M1 after the card was sent.
  • !Assuming Power Automate will handle two-way writes into M1 without a supported interface.

Frequently asked questions

Can Teams approvals update ECI M1 directly?

Yes if you write back through a supported M1 interface or a controlled, reviewed database procedure. Do not update tables blindly, because M1 business rules and audit fields may be bypassed. Confirm the supported route for your version.

Do we need Power Automate?

No. It is a quick option for alerts, but a custom bot gives better identity mapping and approval limits. Many teams start with Power Automate and move to a bot when approvals matter.

How does the bot know who is asking?

Teams passes the signed-in Entra ID identity. Your service maps it to an M1 user and applies that user's data permissions before answering anything.

Can this work if M1 is on-premise only?

Yes. Keep M1 and SQL Server internal, run an on-prem reader, and push events outbound to a relay that Teams can reach. No inbound database exposure is required.

Is Teams better than email for approvals?

Usually, for speed and clarity, since cards show context and a button. Email remains a good fallback for external parties or people not on Teams.

Want Microsoft Teams working on your ECI M1?

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

Get a free assessment