Notification settings that do not do what they say: status comments, actions without login, custom reminder, JSM links, email wrapper and texts

Description

Depends on (merged to dev first): AP-2450 (Web API v2 decisions), AP-2380 (Rovo, refused custom reminder send; contains AP-2374). AP-2146 (Teams) is not on dev yet: this ticket covers Slack, and the Teams parts (the texts of 7c and 7d, Teams chat rows) are added when AP-2146 is merged.

Problem

Each item concerns both apps unless marked Jira or Confluence.

  1. Notifications > "Status comments" off stops only the comment posted when an approval completes, not the one posted when it is deleted (single, bulk, Jira workflow or Automation) or, in Confluence, marked outdated by a page change.

  2. "Enable actions without login" is hidden while "Enable action buttons in notifications" is off, but its saved value still applies. In Jira, unused links are created for every recipient, and with Jira notifications a group call for action (plus a member lookup) and every reminder (automatic, manual, Rovo) go as one call per person instead of one per group or step. With direct email, members get one email each either way. Chat rows (AbstractChatRowAssembler) also read the two settings separately; the Slack and Teams click checks read only "actions without login".

  3. Messages > "Custom reminder" with "Send notification" off: the mailbox button still shows on every approvals list; the user fills in the dialog and only the send is refused. The settings do not say that the toggle affects manual reminders.

  4. The custom reminder dialog shows the template's "From" (read-only), but the reminder, Rovo's included, is sent from the default sender. The dialog's empty "From" placeholder shows a person's name.

  5. Email > "Use custom HTML wrapper template": a wrapper without <section id="content"></section> is saved without a warning, and from then on every email that uses the wrapper is sent without its content.

  6. Jira: JSM "Notification links" of a decision follow where the decision came from, not the approval: only a JSM customer's portal decision counts as "from JSM". After a decision in the work item view, or from Slack, Teams, email or web step actions, Web API v2 or Rovo, the next notifications carry only the agent link, also to customers. Reminders count an approval shown to customers as from JSM. Portal links are also sent while "Show for Customers" is off; only the reminder preview checks it.

  7. Texts that do not match the behaviour:

    • a. "Allow sending email approval reminders": reminders go by the selected mechanism, not always as an email. Rovo's refusal (ReminderPlans) quotes the same label.

    • b. Jira "Workflow trigger failures" suggests admins get the alerts; the user the failed workflow or Automation action ran as gets them, and Instance errors list the failures anyway.

    • c. Jira "Work item watchers receive an email": with Slack or Teams they get a chat message, and watchers who take part in the approval get none.

    • d. Confluence with "Comment mention": the action button toggles have no effect, and the page does not say so.

    • e. Email page: its settings apply only to direct email and emails to email approvers; Jira notifications use Jira's own sender and layout, and the template "From" has no effect there.

    • f. Confluence Email page: the ${applicationName} example says "Approval Path for Jira".

    • g. Messages: turning off a main template also stops its delegate template, whose toggle still looks active.

    • h. Jira JSM "Show for Agents" does not say that agents can also start and reassign approvals in the portal.

Change

  1. "Status comments" off stops every status comment: completion, deletion (single, bulk, Jira workflow or Automation) and, in Confluence, marked outdated. Descriptions:

    • Jira: "When enabled, a comment with the approval status is posted on the work item when an approval is completed, rejected or deleted."

    • Confluence: "When enabled, a comment with the approval status is posted on the page when an approval is completed, rejected, deleted or marked outdated after a page change."

  2. "Enable actions without login" counts as off whenever "Enable action buttons in notifications" is off, for every mechanism in both apps. One effective value is read by the notification builders, reminders, the Slack chat rows (SlackRowAssembler; Teams rows once AP-2146 is merged) and the click checks of AP-2493 fix 5, so in Jira a group call for action goes to the group as one notification again, and a reminder as one notification per step. The saved value is kept.

  3. With the Custom reminder template off, the mailbox button is hidden on every approvals list, and so is the "Send manual notification" button of a step whose notification failed, which opens the same dialog (it now follows the mailbox button's rules); a send from an older tab keeps today's refusal. The Custom reminder "Send notification" description: "When disabled, custom reminders are not sent and the mailbox button next to active approvals is hidden."

  4. Custom reminders, Rovo's included, are sent from the saved Custom reminder template's "From", like the other templates. The dialog's placeholder is a neutral example (Approval Path <no-reply@mail.approval-path.com>).

  5. Saving a wrapper without <section id="content"></section> is refused by the page and the server: "The HTML wrapper must contain <section id="content"></section>." The page also shows the message under the wrapper. A wrapper saved earlier without it (decision 3) does not block saving other settings while it is left unchanged.

  6. Jira: decisions on every path use the approval's stored "from JSM" value, set at start from the work item's space type. A Web API start also stores the portal of a work item in a JSM space (one call per start, only for such work items). With "Show for Customers" off, notifications carry only the agent link, as the reminder preview does. No extra Atlassian call per notification.

  7. Texts:

    • a. Label "Allow sending manual reminders"; description "Shows a mailbox button next to each active approval to remind the approvers of the current step. The reminder is sent with the notification mechanism selected above." Rovo's refusal quotes the new label.

    • b. Description "When enabled, the user an Approval Path workflow or Automation action ran as gets a Jira notification on the work item when the action fails. Failures are also listed in Instance errors." Tooltip "Notifications sent when an Approval Path workflow trigger fails."

    • c. Lead text "Work item watchers are notified of the events selected below:", with the hint "With Slack, watchers who take part in the approval are not notified again." shown for Slack ("With Slack or Teams, ..." for both mechanisms once AP-2146 is merged).

    • d. Confluence with "Comment mention": the "Actions in notifications" section shows "Page comments have no action buttons. These options apply to direct email and Slack." ("direct email, Slack and Teams" once AP-2146 is merged).

    • e. Email page lead: "These settings apply to direct email and to emails sent to email approvers." In Jira, while the mechanism is Jira notifications, the page and the template "From" (except the email approver templates) show "Jira notifications are sent by Jira with its own sender and layout." Not with Slack: messages Slack cannot deliver fall back to direct email, which uses these settings.

    • f. The ${applicationName} example uses the current product's app name.

    • g. A delegate template's description keeps what its own toggle does and adds its main template and its state, for example "When disabled, this notification type will not be sent to any recipients. Sent only while "Call for action" is on. "Call for action" is currently off.", following the main template's toggle on the page.

    • h. "Show for Agents": "Controls whether JSM agents can see, start and reassign approvals in the Customer Portal."

Decisions

  1. A Web API delete with an explicit createComment=true still posts a comment while "Status comments" is off: it is the integration's explicit choice.

  2. Fix 3: the Custom reminder template's "Send notification" stays next to "Allow sending manual reminders"; both must be on for the mailbox button.

  3. Fix 5: a wrapper saved before the release without the placeholder is sent as the default wrapper, and Instance errors gets a warning about it at most once a day.

  4. Fix 6: an approval counts as from JSM when it is stored as from JSM, or the work item it belongs to is in a JSM space (read from the work item the notification already loads), so approvals started before the value was saved or through the Web API get the same links. Portal links also need a stored portal: an approval without one (started through the Web API before this release, or started while the app could not find the work item's portal) keeps the agent link, so no link points at an unknown portal.

Out of scope

  • Which notification types each mechanism supports, and Slack's and Teams' own settings.

  • New settings; only existing settings are made consistent.

Acceptance criteria

  • 1: With "Status comments" off none of the comments of fix 1 is posted; with it on, all are. Web API deletes follow decision 1.

  • 2: Buttons off, actions without login saved on, Jira notifications: a group call for action makes one notification call and no member lookup; a reminder and a Rovo reminder make one call per step. Both on: per-person links.

  • 3: Custom reminder template off: no mailbox button in the admin list, space view, My overview and the work item view (Jira) or page view (Confluence), and no "Send manual notification" button on a step whose notification failed.

  • 4: A custom reminder sent by direct email, from the dialog or from Rovo, arrives from the template's "From".

  • 5: Saving a wrapper without the placeholder shows the error and keeps the saved value; decision 3 is followed.

  • 6: On a JSM work item with link mode "Customer" or "Both", the next-step notification after a decision from any path carries the same links as after a portal decision, also for an approval started through the Web API; with "Show for Customers" off, only agent links.

  • 7: Each text matches the replacement above, in the product it belongs to.

Manual tester notes

  • 1: turn "Status comments" off; complete, delete, bulk delete, and in Jira delete through a workflow post function and an Automation action; in Confluence also mark an approval outdated by a page edit. No comments.

  • 2: a Jira group step with three or more members; with buttons off, members get the same notification whether actions without login is on or off. Repeat with a reminder asked from Rovo.

  • 3: turn the Custom reminder template off and reload each approvals list; check a step whose notification failed.

  • 4: set the template "From", choose direct email, send a custom reminder from the dialog and from Rovo.

  • 5: a wrapper saved before the release is needed for decision 3 (set in the database on qa).

  • 6: a JSM space, approval shown to customers, a customer approver in step 2. Decide step 1 in the work item view, from Slack, the Web API and Rovo (Teams once AP-2146 is merged); check the customer's link. Repeat with an approval started through the Web API, and with "Show for Customers" off.