Chapter 3: Creating Flow Triggers
This chapter provides comprehensive guidance on creating and configuring flow triggers in Business Central. You'll learn the complete workflow from planning through testing, master JSON payload design with placeholders, configure webhook URLs, and validate your integrations work correctly.
By the end of this chapter, you'll be able to independently create flow triggers for any Business Central table and event, design efficient JSON payloads, and troubleshoot common configuration issues.
3.1 Flow Trigger Basics
Planning Your Integration
Before creating a flow trigger, plan the integration carefully:
Questions to Answer:
1. What Business Event Should Trigger the Integration?
Order posted?
Customer created?
Inventory below threshold?
Payment received?
Document approved?
Identify the specific BC table and event type (Insert/Modify/Delete).
2. What Data Does Power Automate Need?
Document numbers (for identification)?
Names and descriptions (for human readers)?
Amounts and quantities (for calculations/routing)?
Dates and timestamps (for sorting/filtering)?
Status fields (for conditional logic)?
List all required fields; find their table and field numbers.
3. What Should Power Automate Do with the Data?
Send email notification?
Create record in external system?
Start approval workflow?
Update SharePoint list?
Post to Teams channel?
This determines your Power Automate flow design.
4. Who Should Trigger the Integration?
All users?
Specific departments?
Certain roles only?
This determines rule group configuration.
5. Are There Conditional Requirements?
Only amounts above threshold?
Only certain customers?
Only specific status values?
Only during business hours?
This determines scenario configuration.
Planning Template:
💡 TIP: Document your plan before starting configuration. This helps catch issues early and provides documentation for future maintenance.
Creating a New Flow Trigger
Once planning is complete, create the flow trigger configuration:
Step 1: Access Flow Trigger List
Open Business Central
Press Alt+Q for search
Type "QUA Power Automate Triggers"
Press Enter to open list
Step 2: Create New Trigger
Click New in the ribbon (or press Ctrl+N)
System opens blank flow trigger card
Code field auto-populates from number series (e.g., "PA-00001")
Can manually edit if needed
Click assist-edit (...) to see available numbers
System generates unique configuration
Step 3: Enter Description
Click in Description field
Enter clear, descriptive text explaining the integration:
Good: "Sales Order Posted - Send Email to Warehouse"
Good: "Customer Created - Add to CRM System"
Poor: "Test Flow"
Poor: "Integration 1"
Description appears in lists and logs—make it meaningful
Step 4: Save (Optional at This Stage)
Press Ctrl+S or click OK to save
Or continue configuring before saving
Until saved, configuration is not active
Code Naming Conventions:
Prefix by Integration Type:
Or Prefix by Source Table:
Choose a convention and stick to it across your organization.
Flow Trigger Configuration Sections
The flow trigger card has several configuration sections:
1. General Section (Top)
Code: Unique identifier
Description: Human-readable purpose
2. Power Automate Details Section
Webhook URL: The HTTPS endpoint to call
JSON Payload: Template with placeholders for data
3. Triggers & Scenarios Section (Embedded)
Triggers Subpage: Which table/events/fields to monitor
Scenarios Subpage: Conditional logic (optional)
Rule Group Subpage: User filtering (optional)
4. Lookup Placeholder FactBox (Right Side)
Table/field browser
Copy placeholder syntax
Reference during payload design
Each section builds on the previous, creating a complete integration configuration.
3.2 Configuring Webhook URLs
Obtaining the Webhook URL from Power Automate
Before configuring BC, create the Power Automate flow and get its webhook URL:
Detailed Procedure:
Step 1: Create Flow
Navigate to https://make.powerautomate.com
Sign in with Microsoft 365 or Dynamics 365 credentials
Click My flows in left navigation
Click + New flow → Automated cloud flow
Name your flow (e.g., "BC Sales Order Posted")
Click Skip (we'll add trigger manually)
Step 2: Add HTTP Trigger
Click + Add a trigger
Search for "HTTP"
Select When an HTTP request is received
Trigger added to flow canvas
Step 3: Save to Generate URL
Click Save button (top right)
Flow name appears in title bar
Flow status shows "Your flow is ready"
Step 4: Retrieve Webhook URL
Click on the HTTP trigger box to expand it
Find field labeled "HTTP POST URL"
Initially shows: "URL will be generated after save"
After save, shows full HTTPS URL
Click Copy icon next to URL
Paste into Notepad or text editor
Example URL:
📋 NOTE: The webhook URL appears ONLY after saving the flow. If you don't see the URL, save the flow first. The URL won't change unless you delete and recreate the trigger.
Entering Webhook URL in Business Central
With URL copied, configure the BC flow trigger:
Step 1: Open Flow Trigger Card
In BC, open your flow trigger (created in section 3.1)
Locate Power Automate Details section
Click in Webhook URL field
Step 2: Paste URL
Paste the complete URL from Power Automate
Verify entire URL is present:
Starts with
https://Contains
.logic.azure.comIncludes
/workflows/segmentEnds with query parameters (
?api-version=...&sig=...)
Ensure no extra spaces or line breaks
Step 3: Validate URL Format
System validates URL format on entry
Must be valid HTTPS URL
Must be publicly accessible URL
Error if invalid format
Common URL Entry Errors:
Error: URL truncated
Error: Extra characters
Error: Plain HTTP (not HTTPS)
Business Central requires HTTPS for security.
⚠️ WARNING: The Webhook URL field in BC is plain text and visible to anyone with access to the flow trigger configuration. Treat this as sensitive information. Use BC permission sets to limit who can view/edit flow triggers.
Testing Webhook Connectivity
After entering the URL, test that BC can reach Power Automate:
Manual Test from Browser:
Copy the webhook URL
Open PowerShell or command prompt
Run:
Replace YOUR_WEBHOOK_URL with actual URL.
Expected Result:
This confirms:
URL is reachable from your network
Power Automate accepts requests
No firewall blocking
If Test Fails:
Error: Unable to connect
Firewall blocking outbound HTTPS
Proxy configuration needed
Network connectivity issue
Error: 404 Not Found
URL is incorrect
Flow was deleted
Trigger was removed
Error: 401 Unauthorized
URL signature parameter corrupt
URL was regenerated (old URL invalid)
From Business Central (Integration Test):
Create a minimal JSON payload and trigger:
Set JSON Payload:
{"test": "value"}Configure simple trigger (e.g., test table)
Trigger the event
Check validation log for HTTP response
Check Power Automate run history
If successful, validation log shows 200 or 202 response, and Power Automate shows a run.
💡 TIP: Keep the Power Automate flow editor open in a browser tab while configuring BC. After making changes in BC, trigger a test event and immediately check Power Automate run history to see if webhook was received.
3.3 Composing JSON Payloads
Designing Effective Payloads
The JSON payload is the data structure sent from BC to Power Automate. Design it to include all necessary information in a logical structure.
Payload Design Principles:
1. Include Unique Identifiers Always include primary keys/document numbers:
Allows Power Automate to reference back to specific BC records.
2. Include Human-Readable Information Include names and descriptions for emails/messages:
Power Automate users understand "Alpine Ski House" better than "C-10000".
3. Include Numeric Values for Calculations Enable filtering and routing in flows:
Omit quotes around numeric placeholders for proper JSON numbers.
4. Include Status/State Fields Enable conditional logic in flows:
5. Include Timestamps Enable sorting, aging calculations, SLA tracking:
6. Group Related Information Use nested objects for clarity:
Payload Size Considerations:
Limits:
Power Automate: 100 MB per request (generous)
Practical: Keep under 100 KB for performance
Recommended: 1-10 KB for most integrations
What NOT to Include:
Binary data (images, PDFs)
Full line item details (if 100+ lines)
Entire document HTML/XML
Complete audit trails
Instead:
Send references/IDs
Let Power Automate retrieve details via API if needed
Summarize (total lines, total quantity) rather than list all
Working with Placeholders
Placeholders resolve BC field values into JSON:
Basic Placeholder Syntax:
Finding Table and Field Numbers:
Method 1: Use FactBox
On flow trigger card, look at right side panel
Lookup Placeholder FactBox shown
Select table from dropdown (e.g., "Sales Header")
Browse fields
Click field to see placeholder format
Copy placeholder to JSON payload
Method 2: Table Information Page
Search for "Table Information"
Find your table (e.g., "Sales Header")
Note Table No. (e.g., 36)
Search for "Field" to see field list
Find your field (e.g., "No.") and note Field No. (e.g., 3)
Construct placeholder:
[36:3]
Method 3: AL Object Browser (If Available) If you have VS Code with AL extension:
Open AL Object Browser
Search for table name
View all fields with numbers
Note table and field numbers
Common Tables and Fields:
Sales Header (Table 36):
[36:1]- Document Type[36:2]- Sell-to Customer No.[36:3]- No. (Document Number)[36:5]- Status[36:13]- Order Date[36:79]- Sell-to Customer Name[36:110]- Amount Including VAT
Customer (Table 18):
[18:1]- No.[18:2]- Name[18:5]- Address[18:7]- City[18:27]- Credit Limit (LCY)[18:39]- Blocked[18:59]- Balance (LCY)
Item (Table 27):
[27:1]- No.[27:3]- Description[27:18]- Unit Price[27:22]- Reorder Point[27:99]- Inventory
Purchase Header (Table 38):
[38:1]- Document Type[38:2]- Buy-from Vendor No.[38:3]- No.[38:5]- Status[38:79]- Buy-from Vendor Name
Posted Sales Invoice Header (Table 112):
[112:2]- Sell-to Customer No.[112:3]- No.[112:79]- Sell-to Customer Name[112:110]- Amount Including VAT
📋 NOTE: Custom field numbers (50000-99999) vary by installation. Always verify custom field numbers in your specific Business Central environment using the Table Information page or FactBox.
String vs. Numeric Placeholders
How you use placeholders affects the resulting JSON data type:
With Quotes (String):
Result:
JSON string type. Harder to use in calculations.
Without Quotes (Numeric):
Result:
JSON number type. Can be used directly in calculations, comparisons.
When to Use Each:
Use Quotes (String):
Text fields:
"customerName": "[36:79]"Code fields:
"itemNo": "[27:1]"Date fields:
"orderDate": "[36:13]"When value might be blank
When leading zeros matter:
"code": "[18:1]"
Omit Quotes (Numeric):
Decimal fields:
"amount": [36:110]Integer fields:
"quantity": [37:15]Boolean fields:
"blocked": [18:39]When you need to perform math in flow
When you need to compare values
Mixed Example:
⚠️ WARNING: If a numeric field contains non-numeric data (rare but possible with custom fields), omitting quotes can create invalid JSON. If unsure, use quotes to ensure valid JSON.
Advanced Payload Techniques
Literal Values:
Mix placeholders with literal text:
"eventType" and "source" are literals; "orderNo" uses placeholder.
Concatenation:
Combine multiple values:
Results in: "123 Main St, Seattle, WA"
Conditional Values:
Cannot use IF/THEN in placeholders, but can use scenarios to control which flow trigger fires:
Instead of:
Create two flow triggers:
High Priority: Scenario
[36:110] > 10000, Payload"priority": "High"Normal Priority: Scenario
[36:110] <= 10000, Payload"priority": "Normal"
Arrays (Limited Support):
You cannot use placeholders to create dynamic arrays. Static arrays work:
For dynamic line items, either:
Send summary only:
"totalLines": 5Have Power Automate query BC via API for details
Create one webhook per line (usually not recommended)
💡 TIP: Keep JSON payloads simple and flat when starting. Add nesting and complexity only when you have a clear need. Simple structures are easier to debug and maintain.
Example JSON Payloads
Example 1: Sales Order Posted
Example 2: Customer Credit Limit Exceeded
Example 3: Inventory Reorder Alert
Example 4: Approval Required
Example 5: Nested Structure
Use these examples as templates and modify field numbers/structure for your needs.
3.4 Working with Placeholders
(This content was already covered above in section 3.3. Consolidating to avoid duplication.)
3.5 Testing Flow Triggers
Pre-Testing Checklist
Before testing your flow trigger, verify configuration:
Flow Trigger Configuration:
Code and description entered
Webhook URL pasted completely
JSON payload designed with placeholders
Trigger configured (table, events)
Scenarios added if conditional logic needed
Rule groups assigned if user filtering needed
Configuration saved (Ctrl+S)
Power Automate Flow:
Flow created and saved
HTTP trigger configured
JSON schema defined
At least one action added (e.g., Send email)
Flow is turned ON (not disabled)
Business Central Setup:
QUALIA Core installed and configured
Power Automate Setup: "Enable Business Rule" checked
User has appropriate permissions
Test data available (record to trigger event)
Testing Methodology
Test Approach:
1. Start with Manual Flow Test
Before connecting to BC, test the Power Automate flow manually:
In Power Automate, open your flow
Click "Test" button (top right)
Select "Manually"
Click "Test"
Paste sample JSON matching your schema:
Click "Run flow"
Flow executes with test data
Verify flow completes successfully
Check that action executed (email sent, record created, etc.)
This confirms the Power Automate side works before testing BC integration.
2. Test BC Flow Trigger
With Power Automate flow verified, test BC integration:
Step 1: Prepare Test Record
Identify record that will trigger event
For Insert trigger: Prepare to create new record
For Modify trigger: Identify existing record to modify
For Delete trigger: Identify record to delete (use test data only!)
Step 2: Trigger the Event
Perform action that triggers event
For Sales Order Posted: Post a sales order
For Customer Created: Create a new customer
For Inventory Modified: Update item inventory
Wait 2-3 seconds for processing
Step 3: Check BC Validation Log
Search for "QUA Validation Log"
Filter Date Filter to today
Find entry with your Validation Set ID (flow trigger code)
Check Status column:
Success: Integration succeeded
Error: Integration failed (see error message)
If success, note HTTP response code (200 or 202)
Step 4: Check Power Automate Run History
Click "My flows"
Find your flow and click on it
View 28-day run history
Most recent run should appear at top
Click run to see details
Verify:
Run started (trigger fired)
Data values correct (check inputs)
Actions executed successfully
No errors in any step
Step 5: Verify End Result
Check that intended action occurred
For email: Check inbox
For Teams: Check channel
For SharePoint: Check list
For API call: Check target system
✅ EXAMPLE - Successful Test Flow:
BC Validation Log Entry:
Power Automate Run History:
Email Received:
All three confirmations indicate successful integration.
Troubleshooting Test Failures
Issue: No Validation Log Entry
Cause: Trigger didn't fire.
Solutions:
Verify trigger Source Table No. matches table you modified
Check correct event type selected (Insert/Modify/Delete)
If using Trigger String, verify field numbers correct
Verify "Enable Business Rule" is checked in setup
Check if scenarios are blocking (remove scenarios temporarily)
Verify user is in assigned rule group (or remove rule group temporarily)
Issue: Validation Log Shows Error
Cause: HTTP request failed.
Check error message in validation log:
"Could not connect":
Network/firewall issue
Verify outbound HTTPS allowed
Test connectivity from server
"404 Not Found":
Webhook URL incorrect
Flow was deleted
Copy URL again from Power Automate
"400 Bad Request":
Invalid JSON payload
Check JSON syntax (commas, quotes, brackets)
Test JSON in online validator
"401 Unauthorized":
Webhook URL signature invalid
Regenerate URL in Power Automate
Copy complete URL including all query parameters
"500 Internal Server Error":
Power Automate service error
Check flow for errors
Try again in a few minutes
"Timeout":
Power Automate didn't respond in 30 seconds
Check Azure service status
Check flow isn't waiting on long-running action
Might succeed despite timeout—check Power Automate
Issue: Validation Log Shows Success, But Flow Didn't Run
Cause: Webhook received but flow not triggered.
Solutions:
Verify flow is turned ON in Power Automate
Check webhook URL is current (not from old/deleted flow)
Check Power Automate run history—might have failed after receiving webhook
Verify flow doesn't have broken connections (re-authenticate connectors)
Issue: Flow Runs But Action Fails
Cause: Flow logic error or connector issue.
Solutions:
Open flow run details in Power Automate
Identify which action failed
Check error message
Common issues:
Email connector not authenticated
SharePoint list doesn't exist
Required field missing in action
Condition logic incorrect
Dynamic content referencing wrong field
Issue: Wrong Data in Flow
Cause: Placeholder issue or schema mismatch.
Solutions:
Verify placeholder table/field numbers correct
Check placeholder syntax (square brackets, colon)
Verify numeric placeholders don't have quotes if you want numbers
Check JSON schema in Power Automate matches payload structure
Test with simpler payload to isolate issue
💡 TIP: Enable detailed logging temporarily during testing. In Power Automate, turn on flow analytics and diagnostics. In BC, export the validation log entry to see complete HTTP request/response details.
Iterative Testing and Refinement
Testing Best Practices:
1. Test in Sandbox First
Never test new integrations in production
Use sandbox environment with test data
Verify completely before deploying to production
2. Test Incrementally
Start with minimal JSON payload (1-2 fields)
Add more fields once basic integration works
Add scenarios/conditions after basic trigger works
Build complexity gradually
3. Test Edge Cases
Empty fields (what if customer name is blank?)
Maximum values (very large amounts)
Special characters (customer name with quotes, ampersands)
Different user roles (if using rule groups)
High volume (trigger 10 events quickly—do all succeed?)
4. Test Failure Scenarios
What if Power Automate is down?
What if webhook URL becomes invalid?
What if network connection lost?
Verify failures are logged appropriately
5. Load Testing (for high-volume integrations)
Trigger 100 events in one minute
Check all webhooks sent successfully
Verify no performance impact on BC
Monitor Power Automate throttling limits
Documentation During Testing:
Create test documentation:
This documentation helps with troubleshooting and future maintenance.
This completes Chapter 3. You now know how to create flow triggers, configure webhook URLs, design JSON payloads with placeholders, and thoroughly test your integrations.
Related Posts
Chapter 06: Troubleshooting and Best Practices
This final chapter provides systematic troubleshooting guidance, best practices for production deployments, performance optimization, security hardening, and ongoing maintenance strategies. Apply these principles to ensure reliable, secure, and maintainable Power Automate integrations with Business Central.
Chapter 05: Power Automate Flow Design
This chapter focuses on the Power Automate side of the integration. You'll learn how to create robust flows that receive webhooks from Business Central, parse JSON data, implement business logic, connect to external services, and handle errors gracefully.
Chapter 04: Configuring Rules and Conditions
This chapter explores the rule engine that determines when flow triggers execute. You'll learn how triggers monitor Business Central tables, how scenarios add conditional logic, and how rule groups filter by user or role. Mastering these concepts allows you to create sophisticated, targeted integrations that fire only when specific conditions are met.
