System integration: connecting the Microsoft environment with ERP
How to connect Microsoft 365, SharePoint, and Teams with your ERP system via Power Automate, Azure Logic Apps, and APIs — with practical examples for Slovenian companies.
System integration means connecting separate business applications into a single digital backbone of the company. When Microsoft 365 (email, SharePoint, Teams) and ERP (for example Pantheon, SAP Business One, Odoo, or Business Central) are connected, employees work in a familiar environment and do not waste time manually re-entering data.
TL;DR — key points
- Use Power Automate for simple scenarios; use Azure Logic Apps or Azure Functions for robust integrations
- ERP should always expose stable APIs — never integrate via direct database access
- For real-time synchronization, consider an event-driven approach (webhooks, Service Bus)
- Establish monitoring and retry logic — integrations must be idempotent
Typical integration scenarios in Slovenian companies
- Invoice approval in Teams: received PDF invoices are transferred from the mailbox to the ERP, triggering an approval flow in Teams.
- Customer synchronization: a new customer in the CRM is automatically created in the ERP (and vice versa).
- SharePoint reporting: monthly ERP reports are automatically generated and published to a library.
- Inventory alerts: when a product falls below the minimum level, a Teams channel receives a message.
Technology choice: Power Automate vs. Logic Apps
| Criterion | Power Automate | Azure Logic Apps |
|---|---|---|
| Target user | Business user / IT | IT / developers |
| License | Included in M365 (limited) / per-user | Consumption (pay-per-execution) |
| Capacity | Up to ~100k executions / month | Unlimited, scaled |
| Versioning and CI/CD | Limited | ARM/Bicep, Git |
| Suitable for | Simple processes, HR, approvals | B2B integrations, EDI, high volumes |
In practice, they are often combined: you start with Power Automate for a quick prototype, then as processes mature, we migrate them to Logic Apps or Azure Functions with a proper CI/CD pipeline.
How to approach an integration project
- Process inventory: what is currently manually transferred between systems and how much time it takes.
- Data model: unified customer, product, and document identifiers across systems.
- API review: which APIs are available in the ERP (REST, SOAP, OData) and where they are missing.
- Security: OAuth 2.0, service principals in Entra ID, Key Vault for secrets.
- Monitoring: Application Insights, error alerts, dashboards.
Integration security
Every connector is a new attack surface. We recommend:
- Service principals in Entra ID (never personal accounts for production integrations)
- Managed Identity for Azure resources whenever possible
- Key Vault for storing keys and passwords — never in the code
- Network traffic protection via Private Endpoints where possible
- Separate test and production environments with separate identities
Idempotency and retry
Every integration will fail at some point — systems will be unreachable, APIs overloaded, or network connections dropped. Therefore, every operation must be idempotent (re-calling does not create a duplicate) and must have retry logic with exponential backoff. In Logic Apps, you configure this declaratively; in Power Automate, through the action's "Retry Policy" settings.
Practical example: invoice approval
An incoming PDF invoice in a shared mailbox triggers the flow:
- Power Automate recognizes a new email with a `.pdf` attachment.
- AI Builder reads key data (vendor, amount, IBAN, date).
- The ERP checks if the vendor exists and if the amount is within contract limits.
- An adaptive card with Approve / Reject buttons opens in the relevant Teams channel.
- Upon approval, the invoice is posted to the ERP, and the PDF is archived in a SharePoint library with metadata.
For extended automation rules, see also our articles on Proactive computer maintenance and Azure for small businesses.
Measuring success
Every integration should have clear KPIs: number of processed documents, average processing time, and error rate. This data in Application Insights or Log Analytics forms the basis for continuous improvement.
- Do we need a developer for Power Automate?
- For basic scenarios, no — a good IT administrator can build flows themselves. However, for complex integrations with custom logic and error handling, we recommend a developer or an IT partner.
- How long does a typical integration project implementation take?
- Simple integrations (e.g., customer synchronization) are established in 2–4 weeks. Complex scenarios with multiple systems and approval flows usually take 2–4 months.
- What happens if the ERP does not have an API?
- In this case, we avoid direct database access and build a thin API layer (e.g., an Azure Function that communicates with the ERP via official mechanisms). Direct SQL access poses risks and voids warranties.
- How do we prevent an integration loop from circling the same change?
- Each event should carry a source system identifier. If the source is the target system, skip the flow. An alternative is a time window (e.g., "do not respond to changes newer than 10 seconds").
Related posts
Business Continuity Plan: What a BCP for SMEs Must Include
What do we do if nothing works tomorrow morning? A 10-page BCP is all you need.
IT SupportIT Infrastructure Documentation: What Needs to be Recorded and Why
If it isn't documented, it doesn't exist. The minimum documentation scope every company needs.
CybersecurityTwo-Factor Authentication: Implementation Without Employee Resistance
MFA stops the vast majority of stolen password attacks. Learn how to deploy it quickly and without complaints.
