Krosoft Wiki

Power Automate Outlook outbound template

Purpose

Use this reference when you want Planning Sync for Jira to forward outbound Tempo plan events to Microsoft Power Automate and send an Outlook email from the Flow. This is documentation for building the Flow; it is not an importable Power Automate package.

The pattern is:

  1. Planning Sync receives a Tempo plan event.

  2. Planning Sync forwards the event to a Power Automate HTTP trigger.

  3. Power Automate parses the JSON payload.

  4. Power Automate sends an Outlook email using fields from the payload.

Prerequisites

Before setup, confirm that you have:

  • Planning Sync Advanced edition, because outbound destinations are an Advanced feature.

  • Administrator access to the Planning Sync configuration in Jira.

  • A Microsoft Power Automate environment where you can create a Flow with an HTTP trigger.

  • Outlook permissions for the account or connection that will send the email.

  • A decision about who should receive the emails and which Tempo event types should trigger them.

Planning Sync outbound destination setup

  1. In Power Automate, create a new automated cloud Flow that starts with the When an HTTP request is received trigger.

  2. Save the Flow once Power Automate has generated the HTTP POST URL.

  3. In Jira, open Apps, then Planning Sync, then Outbound destinations.

  4. Add a destination for the Power Automate trigger URL.

  5. Select the Tempo plan events to forward, such as plan.created, plan.updated, and plan.deleted.

  6. Choose Custom body as the payload mode.

  7. Paste the custom JSON payload from this page, then adjust fields as needed.

  8. Optionally store a shared secret on the destination if the Flow or a validation layer will verify X-Signature.

  9. Save the destination and send a test Tempo plan event.

If a destination delivery fails, Planning Sync retries the outbound delivery and records failures in the audit logs.

Power Automate flow outline

Create a Flow with these actions:

  1. When an HTTP request is received

    • Method: POST

    • Request body JSON schema: generate from the sample payload below after the Planning Sync custom payload is configured.

  2. Parse JSON

    • Content: HTTP trigger body.

    • Schema: generated from the custom payload example.

  3. Optional shared-secret validation

    • Read the X-Signature header.

    • Compare it to an HMAC-SHA256 hex digest of the raw request body using the same shared secret stored in Planning Sync.

    • Stop the Flow if the signature is missing or invalid.

  4. Send an email (V2) from Outlook

    • To: a fixed mailbox, a distribution list, or a field derived from the payload.

    • Subject: use the mapping below.

    • Body: use the mapping below.

Planning Sync sends outbound requests with these headers:

Header

Purpose

Content-Type: application/json

Indicates that the body is JSON.

X-Source: forge-tempo

Identifies Planning Sync outbound delivery.

X-Signature

Present only when a shared secret is configured. Contains an HMAC-SHA256 hex digest of the request body.

Recommended validation:

  • Configure a unique shared secret per environment and destination.

  • Validate X-Signature before sending email when the Flow is exposed beyond a tightly controlled tenant.

  • Compare the signature against the exact raw request body. Reformatting the JSON before calculating the HMAC will produce a different digest.

  • Return or terminate with a failure status if the signature does not match, so the failed delivery is visible and can be retried or investigated.

Example custom JSON payload for Tempo plan events

Paste this in Planning Sync as the destination's custom JSON body. The template variables are resolved by Planning Sync before the request is sent.

JSON
{
  "source": "planning-sync-for-jira",
  "eventType": "{{eventType}}",
  "jiraIssueKey": "{{issue.key}}",
  "tempoPlanId": "{{payload.planId}}",
  "assignee": "{{assignee.displayName}}",
  "assigneeEmail": "{{assignee.email}}",
  "startDate": "{{plan.startDate}}",
  "endDate": "{{plan.endDate}}",
  "jiraIssueUrl": "{{issue.url}}"
}

For first-time Power Automate schema generation, you can also use this representative resolved sample:

JSON
{
  "source": "planning-sync-for-jira",
  "eventType": "plan.updated",
  "jiraIssueKey": "PROJ-123",
  "tempoPlanId": "987654",
  "assignee": "Alex Example",
  "assigneeEmail": "alex@example.com",
  "startDate": "2026-05-19",
  "endDate": "2026-05-21",
  "jiraIssueUrl": "https://your-site.atlassian.net/browse/PROJ-123"
}

Outlook email subject/body mapping

Recommended subject:

[Planning Sync] @{body('Parse_JSON')?['eventType']} for @{body('Parse_JSON')?['jiraIssueKey']}

Recommended body:

Planning Sync forwarded a Tempo plan event.

Event type: @{body('Parse_JSON')?['eventType']}
Jira issue: @{body('Parse_JSON')?['jiraIssueKey']}
Issue URL: @{body('Parse_JSON')?['jiraIssueUrl']}
Tempo plan ID: @{body('Parse_JSON')?['tempoPlanId']}
Assignee: @{body('Parse_JSON')?['assignee']}
Assignee email: @{body('Parse_JSON')?['assigneeEmail']}
Start date: @{body('Parse_JSON')?['startDate']}
End date: @{body('Parse_JSON')?['endDate']}

Use a fixed recipient for operational notifications, or route by project, event type, or assignee when your Flow has a clear ownership rule.

Test checklist

Before considering the Flow live, verify that:

  • The Power Automate HTTP trigger URL is saved as an enabled Planning Sync outbound destination.

  • The destination is configured for the intended Tempo events.

  • The custom JSON body is valid JSON in Planning Sync.

  • A created or updated Tempo plan triggers the Flow.

  • The Parse JSON action exposes the expected fields.

  • The Outlook action sends the email to the expected recipient.

  • If a shared secret is configured, invalid signatures stop the Flow before email is sent.

  • Planning Sync audit logs show successful delivery, or retries and failures when the Flow rejects a request.

Troubleshooting

Symptom

What to check

Flow never starts

Confirm the Planning Sync destination URL is the current Power Automate HTTP POST URL, the destination is enabled, and the selected Tempo event type matches the test event.

Parse JSON fails

Regenerate the schema from a resolved sample that matches the custom JSON body. Make sure the Planning Sync custom body is valid JSON.

Email fields are empty

Confirm the template variables exist for the forwarded event. Some assignee or issue fields can be empty if Jira profile data or issue enrichment is unavailable.

Signature validation fails

Calculate the HMAC over the exact raw request body and use the same shared secret stored for the Planning Sync destination.

Duplicate emails appear

Check whether multiple outbound destinations or multiple Flow runs are configured for the same event type.

Delivery fails in Planning Sync

Review the audit logs. Failed outbound delivery is retried by Planning Sync and failures are recorded for investigation.