Jira Service Management is a powerful platform. Its built-in automation rules handle the straightforward cases well: auto-assign tickets, send notifications, trigger status transitions. Many teams can cover 80 percent of their daily work this way.
But ITSM in practice rarely stays that simple. Real service operations require cross-team escalations, SLA exceptions that depend on customer contracts, cross-departmental approval workflows, and customer portals that must reflect internal data in real time. Teams trying to model these cases with native JSM rules typically end up with sprawling, brittle rule chains — or workarounds that function until they break, which as Murphy’s Law dictates tends to happen at exactly the wrong moment.
This is precisely where Atlassian Forge opens a different path. Instead of stretching automation rules beyond their intended scope, Forge makes it possible to implement exactly the logic your ITSM processes actually require — securely, within the Atlassian platform, and without external infrastructure.
Before exploring what Forge can do here, it’s worth taking a clear look at the functional gaps.
Native JSM automation is rule-based and linear. It works well when a trigger, condition, and action can be expressed as a straightforward sequence. Service management workflows, however, frequently demand more:
These scenarios aren’t fundamentally impossible in native JSM, but they require compromises or additional tooling. Forge removes those trade-offs.
Standard assignment rules in JSM work with simple conditions. A real routing problem often looks like this: a hardware request from a user in Frankfurt should go to the EMEA hardware team — but only if that team has fewer than 15 open tickets. Otherwise, it lands in the global queue. If the request is marked urgent, team leadership should be notified immediately via Slack.
With a Forge app, this logic lives in a single, versioned function triggered when an issue is created. It can query the Jira API to check queue loads, call an external Slack webhook (provided Slack’s domain is listed in the app’s permitted egress domains), and update the ticket’s assignment and priority in one coherent flow. The logic is readable, testable, and straightforward to adjust when team structures change.
This is a significant improvement over trying to replicate the same behaviour through nested automation rules, where execution order is hard to follow and debugging means tracing through each individual rule.
Most teams monitor SLAs reactively: an alert fires when a breach has already occurred. By that point, the damage is done. A Forge-based approach can transform this into a proactive model.
A scheduled Forge function can run every 15 or 30 minutes, query all open tickets with active SLAs, and calculate the remaining time against their current status. Tickets reaching a configurable warning threshold — say, less than 20 percent of SLA time remaining — trigger targeted notifications to the responsible agent and team leadership. If there’s no response and the window shrinks further, the system escalates automatically.
This kind of logic requires persistent state (which ticket has already been escalated to which level?) and time-based execution — both of which Forge covers natively via its Storage APIs and Scheduled Triggers. The result is an escalation model that is proactive, auditable, and requires no separate monitoring tool.
The JSM customer portal is functional but rigid. Every customer sees the same form structure, the same status labels, and the same level of detail — regardless of their contract, their history with the service team, or the nature of their request.
With Forge’s UI Kit and Custom UI capabilities, the portal becomes extensible. A Forge app can add panels to the portal’s request detail view and extend the portal header and footer with tailored content: surfacing asset information from an integrated CMDB, displaying customer-specific support context, or rendering service level details alongside the standard request view.
This is especially relevant for enterprise service desks serving customers on different contract models. A customer on premium support sees their dedicated contacts and the response times guaranteed by their contract. A standard customer sees the general queue. The portal reflects the actual service relationship, rather than presenting a one-size-fits-all experience.
Several Forge capabilities are particularly relevant in the JSM context:
Event triggers on issue lifecycle events (avi:jira:created:issue, avi:jira:updated:issue, etc.) allow Forge functions to respond immediately when tickets are created, transitioned, or updated — no polling required.
Scheduled Triggers handle time-based logic such as SLA monitoring without the need for external cron infrastructure.
Forge Storage and Forge SQL provide persistence for state that must survive beyond individual invocations: tracking escalation levels, caching lookup data, or managing customer-specific configurations.
UI Kit and Custom UI enable frontend extensions in both the customer portal and the JSM agent view: dynamic, data-driven components that stay within the platform’s security model.
Forge Remote connects apps to external systems — CMDBs, HR directories, monitoring tools — within Forge’s secure egress controls, keeping data flows auditable and compliant.
Teams evaluating this question often also consider tools like n8n, Zapier, or custom webhook receivers. These can work, but they introduce trade-offs that matter in an ITSM context.
External tools sit outside the Atlassian trust boundary. Data flowing through them leaves the platform, which complicates GDPR compliance, data residency guarantees, and security audits. They also require their own authentication management, their own monitoring, and their own error handling. When something breaks at two in the morning, the debugging trail crosses system boundaries.
Forge keeps everything inside the Atlassian platform. Execution logs are accessible in the Developer Console. Data stored in Forge Storage is subject to the same data residency controls as the rest of the Atlassian instance. Security and compliance audits cover the complete system — not a patchwork of integrations.
There’s also the question of execution context. Forge functions run with the security context of the triggering user or as a defined app principal, which in JSM directly affects what data is visible and what actions are permitted. An external tool has to solve this through its own API tokens and service accounts — which works, but weakens the audit trail. When a compliance team asks who triggered a workflow and with what permissions, Forge gives a clear answer.
This is the same argument made in our post on Forge vs. Connect: the platform boundary matters — and Forge keeps your solution inside it.
The starting point is simpler than it might look. A single Forge function responding to avi:jira:created:issue can implement routing logic that immediately improves ticket distribution — with visible results from day one.
From there, SLA monitoring as a Scheduled Trigger is a natural second step. Customer portal extensions typically come later, once the backend logic is stable and the team is familiar with Forge’s UI capabilities.
The key is to start with whichever workflow creates the most friction today. In most service management environments, that’s either routing accuracy or SLA escalation. Pick one process that causes pain, build a focused Forge app around it — and the path toward broader automation becomes clear.
Forge doesn’t replace native JSM automation — it extends it into the territory where native rules reach their limits. For ITSM teams dealing with complex routing, proactive SLA management, or differentiated customer experiences, that extension is the difference between a service desk that keeps up and one that stays ahead.
Is your team looking to extend JSM with custom Forge logic? Our experienced Atlassian development teams support you with architecture, development, and certification. Get in touch via email or simply schedule an initial remote meeting with us.