Epicor BPM Send Email: Widget, Function and SMTP Setup
epicor bpm send email
Also searched as
- epicor function send email
- epicor bpm email attachment
- epicor bpm smtp not sending
Short answer
To send email from an Epicor Kinetic BPM or Epicor Function, make sure the server SMTP settings work, then add a Send Email widget to the directive or function and fill the To, Subject, Body and optional attachment. Test the SMTP path first with a standard email-producing action, because most failures are server mail settings, not the widget.
Applies to: Epicor Kinetic 2021 and later, Method and Data Directives, Epicor Functions; SMTP as configured by the server administrator
How to send an email from a BPM or function
- 1Confirm the Epicor server can send mail: the SMTP host, port, authentication and from-address are set in the server's email configuration, and the mail server allows relaying from the Epicor application server.
- 2Prove it before building: trigger any standard Epicor action that emails (an order acknowledgement or a report set to email) and confirm it arrives.
- 3Open the directive (BPM Method Directive Maintenance) or the function (Epicor Functions Maintenance) and add a Condition widget so the email only fires on the case you want.
- 4Add a Send Email widget on the true branch. Set From, To, Cc, Subject and Body. Use variables or fields to fill the recipient and text.
- 5If you need an attachment, generate or locate the file first and reference it in the widget's attachment setting. Keep the file reachable from the application server.
- 6For HTML bodies, build the string in a variable first and pass it in, so you can test the text in isolation.
- 7Enable the directive, save the function, then test with a recipient list that contains only you.
- 8Check the server trace log for the SMTP exception text if nothing arrives, and the recipient spam or quarantine folder.
Where email actually fails
The widget is a thin layer over the server's mail client. When nothing arrives, the cause is usually outside the BPM: wrong SMTP host or port, TLS mismatch, an authentication account without permission to send as the from-address, or a firewall rule between the Epicor server and the mail relay. Microsoft 365 tenants that disabled basic authentication frequently break older SMTP setups.
Use a from-address your mail system accepts. Many relays reject mail whose sender domain does not match the authenticated account or is not allowed to relay. Fixing that on the mail side is faster than any workaround in the BPM.
BPM versus function: which should send
If the email is a side effect of a transaction (a job released, an order held, a receipt posted), a Method Directive in Post-Processing is the natural place. If many directives need the same email format, put the Send Email widget in an Epicor Function that takes the recipient, subject and data as parameters and call it from each directive.
Functions keep the formatting and recipient rules in one maintained place, which matters when someone changes the template a year later. The trade-off is one more object to secure and version, so for a single one-off alert the widget in the directive is enough.
Testing safely
Never test an outbound email BPM against live distribution lists. Add a condition that sends to a single test address when the company or site is a test one, or route all recipients through a variable you can override.
Throttle in the design. A Data Directive on a high-volume table that emails on every row will flood a mailbox during a DMT load or mass update. Add a condition on a status transition and guard against firing in bulk imports.
Try it here, free
Epicor Kinetic BPM Directive Inventory Worksheet
An editable register of your Epicor directives with owner, purpose, risk score and review date, exportable to Excel.
Common pitfalls
- !Building the widget before confirming the server SMTP configuration works.
- !Emailing from a Data Directive that fires on every row during imports and floods recipients.
- !Using a from-address the mail relay does not permit, causing silent rejection.
- !Pointing an attachment at a path only your workstation can see, not the application server.
- !Leaving real customer addresses in a BPM that runs in a test company.
How an ERP-grounded AI assistant handles this
An assistant that reads your Epicor configuration can show which directives send mail and to whom, which helps when someone asks why a customer received a message. ERPray can answer questions such as which orders triggered a notification, with the underlying query visible. Changing a directive stays a reviewed change.
Frequently asked questions
Why does my Epicor BPM send email widget do nothing?
The directive may be disabled, the condition may never be true, or the server SMTP settings may be wrong. Test a standard Epicor email first, then check the server trace log for the SMTP exception. The widget itself rarely fails on its own.
Can an Epicor Function send an email?
Yes. Epicor Functions support a Send Email widget in the designer, so you can wrap the email in a reusable function and call it from BPMs, other functions or an external REST call.
How do I attach a file in an Epicor BPM email?
Generate or locate the file on a path the application server can read, then reference it in the attachment setting of the Send Email widget. Verify permissions on the folder for the account the server runs as.
Does Microsoft 365 work with Epicor BPM email?
It can, but tenants that disabled basic SMTP authentication need a supported relay or connector configuration. Ask your mail administrator how the Epicor server should authenticate before you debug the BPM.
Related
Epicor BPM InfoMessage, Message Box, Throw Exception and Hold
In Epicor Kinetic BPM, a message to the user is either a non-blocking InfoMessage (a Show Message widget, or PublishInfoMessage in custom code) or a blocking exception (a Raise Exception widget, or a thrown BLException) that cancels the save. A hold is not a separate message type: you set the relevant hold flag on the record in a Data or Method directive and optionally tell the user why.
AdvancedHow to create and call an Epicor Function
Open Function Studio from the main menu (Customization > Function Studio) or from inside a BPM designer's Call Context widget, define a Library and Function with typed inputs/outputs, write the logic in the C# widget, then compile and test with the built-in test harness before calling it from a BPM directive, a dashboard, or another function.
How-toHow to Create a BPM Method Directive in Epicor Kinetic
In Epicor Kinetic, open Business Process Management > Method Directive Maintenance (the BPM Workbench), pick the business object and method, choose Pre-Processing, Base Processing or Post-Processing, then add a condition and actions such as Show Message or Set Field. Enable it and test in a pilot company before production.
AdvancedEpicor Function Examples: Update a Table, Call It, Schedule It
An Epicor Function takes typed inputs, runs widgets or code, and returns outputs. You can update data through a business object call or the table widgets, call the function from a BPM, from Application Studio or over REST, and schedule it through an external scheduler or a task agent pattern that fits your release.
Error fixFixing Epicor BusinessObjectException: BPM Directive Errors
A BusinessObjectException that says "A Business Process Management (BPM) directive has raised the following error" means a directive on that business object stopped the transaction, either deliberately via a Raise Exception widget or accidentally via an unhandled .NET error in Custom Code. Expand the InnerException on the error dialog to see the real message and the directive name, then open BPM Designer for that object and method to find the widget that fired.
How-toFixing a Slow Epicor BAQ (Business Activity Query)
A slow BAQ in Epicor is usually caused by unindexed join columns, a subquery or calculated field forcing a table scan, or the BAQ pulling far more rows than the dashboard actually displays before filtering client-side. Fix it by reading the SQL Server execution plan Epicor generates, moving filters into the BAQ criteria instead of the dashboard filter panel, and replacing subqueries with joins where possible.
AI for ERPAI for Epicor Kinetic, Beyond What Prism Covers
Add AI to Epicor Kinetic beyond Prism: private LLM over BAQs, BPM data, and REST v2, on-prem or private cloud, with honest guidance on when Prism already covers you.
AI for ERPPrivate AI for Epicor Kinetic Cloud, Outside the Multi-Tenant Boundary
Run a private LLM on Epicor Kinetic private cloud or Kinetic Cloud data via BAQs, REST v2 and Data Fabric, keeping sensitive manufacturing data off shared AI.
Stuck on Epicor Kinetic?
Talk to engineers who work inside Epicor Kinetic every week, and who build private AI that answers these questions from your own ERP data.
Keep exploring
Free tools
- Epicor Kinetic BPM Directive Inventory WorksheetAn editable register of your Epicor directives with owner, purpose, risk score and review date, exportable to Excel.
- Epicor BPM Directive Design TemplateA fill-in design document for BPM method and data directives covering trigger, conditions, actions, testing and rollback.
- Epicor BPM Directive Overhead CalculatorSee how many milliseconds and server hours your BPM directives add per transaction and per day.
ERP fixes and how-tos
- How to create and call an Epicor FunctionHow to create Epicor Functions in Function Studio: define inputs and outputs, write the C# widget, test, then call the function from a BPM directive.
- Epicor Function Examples: Update a Table, Call It, Schedule ItWorked Epicor Kinetic Function examples: updating a table, calling a function from a BPM, Application Studio or REST, and scheduling a recurring run.
- Epicor Function Custom Code: C# Signature, Parameters and Calling ItWrite custom C# code in Epicor Functions: signature, request and response parameters, libraries, calling from BPM and Application Studio, with working examples.
AI on your ERP
- AI for Epicor Kinetic, Beyond What Prism CoversAdd AI to Epicor Kinetic beyond Prism: private LLM over BAQs, BPM data, and REST v2, on-prem or private cloud, with honest guidance on when Prism already covers you.
- Private AI for Epicor Kinetic Cloud, Outside the Multi-Tenant BoundaryRun a private LLM on Epicor Kinetic private cloud or Kinetic Cloud data via BAQs, REST v2 and Data Fabric, keeping sensitive manufacturing data off shared AI.
Integrations
- How to add WhatsApp to Epicor KineticHow to connect WhatsApp Business to Epicor Kinetic: REST and BPM triggers, template messages, opt-in rules and two-way replies that post back to the ERP.
- How to automate email into Epicor KineticTurn inbound POs, RFQs, invoices and supplier confirmations in shared inboxes into Epicor Kinetic transactions with parsing, review queues and REST posting.