Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Approval E-Mail Notifications Not Sending

Josh Martin
Contributor
April 22, 2022

I have a workflow that has 3 different statuses that require approval from different fields on the issue. I have set each one up to require approval from the correct field, but notifications are not sending to the people who need to approve.

I went through this previous community post and I have ruled everything out that was discussed: https://community.atlassian.com/t5/Jira-Service-Management/Jira-Service-Desk-Approval-Emails-not-being-sent-to-approvers/qaq-p/939679

I believe my first status that needed approval did e-mail the user to get their approval.

Now that I'm to the second status that needs approval, the e-mail did not send.

I'm wondering if it is because you cannot have multiple approval statuses in one workflow?

1 answer

1 accepted

1 vote
Answer accepted
Alex Koxaras _Relational_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
April 22, 2022

Hi @Josh Martin 

You can have multiple approval in one workflow. I know that because I've done this. It would be very useful to share your workflow with us so as to help you faster. First of all I would check that I have set up properly the second approval, meaning:

  • You've activated the approval on the specific status
  • You've placed the correct group of approvers within your workflow
  • You've placed the correct approvers on the transition screen

A question: These approvals are setup up by you in a serial way? One after the other?

How are the approvers get chosen? Is the user picking them by a transition screen?

Josh Martin
Contributor
April 22, 2022

Hi @Alex Koxaras _Relational_ -- Thanks for the response!

Two of the approvals are back to back and then the third one is later on in the workflow.  The approvers are chosen and set by an Automation that runs at transition (Review -> Planning) before the approval statuses.  I modified my workflow so I could transition the "Waiting for Approval" status (which is where approval is required) to "Pending" and then "Pending" to "Waiting for Approval" and when I did that, the e-mails went out.  I didn't change anything on the issue or workflow approvals. So In the end, I was able to get the approval emails to go out, but I hope I don't have to manually transition these out and back to the approval status.

Here is a screenshot of my workflow:

workflow.jpg

Here is the XML my workflow: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd">
<workflow>
<meta name="jira.description"></meta>
<meta name="jira.update.author.id">557058:72075df9-a840-4de3-b9ce-8bef01e904c7</meta>
<meta name="jira.update.author.key">557058:72075df9-a840-4de3-b9ce-8bef01e904c7</meta>
<meta name="jira.updated.date">1650638164217</meta>
<initial-actions>
<action id="1" name="Create">
<validators>
<validator name="" type="class">
<arg name="class.name">com.atlassian.jira.workflow.validator.PermissionValidator</arg>
<arg name="permission">Create Issue</arg>
</validator>
</validators>
<results>
<unconditional-result old-status="null" status="null" step="1">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueCreateFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">1</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</initial-actions>
<global-actions>
<action id="9412" name="Mark as Cancelled">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<results>
<unconditional-result old-status="null" status="null" step="7">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9432" name="Pending">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="18">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</global-actions>
<common-actions>
<action id="9222" name="Back to awaiting implementation">
<results>
<unconditional-result old-status="null" status="null" step="10">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9242" name="Back to planning">
<restrict-to>
<conditions type="AND">
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="3">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9212" name="Implement">
<results>
<unconditional-result old-status="null" status="null" step="2">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</common-actions>
<steps>
<step id="1" name="Review">
<meta name="jira.status.id">10009</meta>
<actions>
<action id="9252" name="Emergency override">
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="2">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9013" name="Assign Change" view="fieldscreen">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id">10152</meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="3">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9016" name="Decline" view="fieldscreen">
<meta name="jira.fieldscreen.id">10073</meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="6">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="2" name="Implementing">
<meta name="jira.status.id">10010</meta>
<actions>
<action id="9028" name="Complete" view="fieldscreen">
<meta name="jira.fieldscreen.id">10073</meta>
<results>
<unconditional-result old-status="null" status="null" step="8">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9152" name="Fail" view="fieldscreen">
<meta name="jira.fieldscreen.id">10073</meta>
<results>
<unconditional-result old-status="null" status="null" step="9">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="3" name="Planning">
<meta name="jira.status.id">10011</meta>
<actions>
<action id="9402" name="Ready for Initiator Approval">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<validators>
<validator name="" type="class">
<arg name="class.name">com.atlassian.jira.workflow.validator.FieldRequiredValidator</arg>
<arg name="contextHandling">no</arg>
<arg name="errorMessage">Please provide a detailed implementation plan-- it is currently missing.</arg>
<arg name="hidFieldsList">customfield_10042@@</arg>
</validator>
<validator name="" type="class">
<arg name="class.name">com.atlassian.jira.workflow.validator.FieldRequiredValidator</arg>
<arg name="contextHandling">no</arg>
<arg name="errorMessage">Please provide a detailed test plan-- it is currently missing.</arg>
<arg name="hidFieldsList">customfield_10044@@</arg>
</validator>
<validator name="" type="class">
<arg name="class.name">com.atlassian.jira.workflow.validator.FieldRequiredValidator</arg>
<arg name="contextHandling">no</arg>
<arg name="errorMessage">Please provide a detailed backout plan-- it is currently missing.</arg>
<arg name="hidFieldsList">customfield_10043@@</arg>
</validator>
</validators>
<results>
<unconditional-result old-status="null" status="null" step="17">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="6" name="Declined">
<meta name="jira.status.id">10002</meta>
</step>
<step id="7" name="Canceled">
<meta name="jira.status.id">10006</meta>
</step>
<step id="8" name="Completed">
<meta name="jira.status.id">10013</meta>
<actions>
<action id="9422" name="Rollback">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<results>
<unconditional-result old-status="null" status="null" step="15">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="9" name="Failed">
<meta name="jira.status.id">10014</meta>
</step>
<step id="10" name="Awaiting implementation">
<meta name="jira.status.id">10015</meta>
<actions>
<action id="9332" name="Start Working">
<meta name="jira.description">When you're ready to start working this change request</meta>
<meta name="jira.fieldscreen.id"></meta>
<results>
<unconditional-result old-status="null" status="null" step="12">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="12" name="Work in progress">
<meta name="jira.status.id">10016</meta>
<actions>
<common-action id="9222" />
<action id="9342" name="Ready for Testing">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<results>
<unconditional-result old-status="null" status="null" step="13">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="13" name="Testing">
<meta name="approval.active">true</meta>
<meta name="approval.condition.type">percent</meta>
<meta name="approval.condition.value">100</meta>
<meta name="approval.field.id">customfield_10093</meta>
<meta name="approval.pre-populated.field.id"></meta>
<meta name="approval.transition.approved">9362</meta>
<meta name="approval.transition.rejected">9352</meta>
<meta name="jira.status.id">10029</meta>
<actions>
<action id="9352" name="Back to Work in Progress">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="12">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9362" name="Approve Testing">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="14">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="14" name="Testing Complete">
<meta name="approval.active">false</meta>
<meta name="jira.status.id">10055</meta>
<actions>
<common-action id="9212" />
<action id="9382" name="Undo Testing Approval">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<results>
<unconditional-result old-status="null" status="null" step="13">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="15" name="Rolled Back">
<meta name="jira.status.id">10059</meta>
</step>
<step id="16" name="Waiting for approval">
<meta name="approval.active">true</meta>
<meta name="approval.condition.type">percent</meta>
<meta name="approval.condition.value">100</meta>
<meta name="approval.field.id">customfield_10003</meta>
<meta name="approval.pre-populated.field.id"></meta>
<meta name="approval.transition.approved">9202</meta>
<meta name="approval.transition.rejected">9232</meta>
<meta name="jira.status.id">10008</meta>
<actions>
<action id="9232" name="Decline" view="fieldscreen">
<meta name="jira.fieldscreen.id">10073</meta>
<restrict-to>
<conditions>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="6">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9202" name="Approve">
<restrict-to>
<conditions>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="10">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.CopyValueFromOtherFieldPostFunction</arg>
<arg name="copyType">same</arg>
<arg name="destinationField">customfield_10093</arg>
<arg name="full.module.key">com.atlassian.jira.plugin.system.workflowcopyValueFromOtherField-function</arg>
<arg name="sourceField">reporter</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="17" name="Waiting for customer">
<meta name="approval.active">true</meta>
<meta name="approval.condition.type">percent</meta>
<meta name="approval.condition.value">100</meta>
<meta name="approval.field.id">customfield_10114</meta>
<meta name="approval.pre-populated.field.id"></meta>
<meta name="approval.transition.approved">9192</meta>
<meta name="approval.transition.rejected">9242</meta>
<meta name="jira.status.id">10004</meta>
<actions>
<common-action id="9242" />
<action id="9192" name="Ready for Approval">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions type="AND">
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
<condition name="BlockInProgressApprovalCondition" type="class">
<arg name="class.name">com.atlassian.servicedesk.plugins.approvals.internal.workflow.BlockInProgressApprovalCondition</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="16">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
<step id="18" name="Pending">
<meta name="jira.status.id">10005</meta>
<actions>
<action id="9442" name="Back to Planning">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="3">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9452" name="Back to Waiting for Customer">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="17">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
<action id="9462" name="Back to Waiting for Approval">
<meta name="jira.description"></meta>
<meta name="jira.fieldscreen.id"></meta>
<restrict-to>
<conditions>
<condition type="class">
<arg name="class.name">com.atlassian.jira.workflow.condition.UserInGroupCondition</arg>
<arg name="group">Change Managers</arg>
</condition>
</conditions>
</restrict-to>
<results>
<unconditional-result old-status="null" status="null" step="16">
<post-functions>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg>
</function>
<function type="class">
<arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg>
<arg name="eventTypeId">13</arg>
</function>
</post-functions>
</unconditional-result>
</results>
</action>
</actions>
</step>
</steps>
</workflow>
Alex Koxaras _Relational_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
April 22, 2022

Thanx for the info @Josh Martin. I was hoping that your answer wouldn't be "back-to-back" approvals. The problem with that is that after any approval, the post function are not triggered. If you are doing this automation using the jira automation, then I would suggest that you log the approvers field, to check if it is populated.

Most likely, my two cents, is that your workflow do not send any email, simply because the approvers field (or whatever other user picker field you use) isn't populated by the time the email is sent out.

Josh Martin
Contributor
April 22, 2022

Got'cha! I'll do a little more investigating with logging in the automation. 

Alex Koxaras _Relational_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
April 22, 2022

Log it before sending the email. Use a smart value like:

{{issue.fields.approvers}}

Or in case you have a custom field, then use {{issue.fields.CUSTOM FIELD NAME}}

Let me know if that works.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events