Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 

Repository files navigation

JiraBridge-OnPrem

Bridging the Impossible: Jira On-Premises ↔ Power Automate & Copilot Studio The complete, free, production-ready solution nobody else has built.

License: MIT Power Platform Jira Copilot Studio

By Kerolos Β· πŸ“– Full Blog Post & Walkthrough Β· 🌐 Power of Automation


🎯 Why This Exists

Microsoft's built-in Jira connector only works with Jira Cloud. Thousands of enterprises running Jira Server or Jira Data Center on-premises are stuck β€” the native connector fails with 401 Unauthorized because it expects Jira Cloud's auth format.

Existing workarounds are either:

  • πŸ”» Raw HTTP actions β€” tedious, no reusable connector, no IntelliSense
  • πŸ’Έ Paid middleware (CData, Exalate) β€” expensive, license-bound
  • ❓ Unanswered forum threads β€” the community has been asking for years

Nobody has published a complete, free, production-ready custom connector with on-prem gateway integration, flow wrappers, and an AI agent.

Until now. πŸŽ‰


✨ What You Get

Component What It Does
🧩 45-Action Custom Connector Full OpenAPI 2.0 spec covering Issues, Comments, Transitions, Worklogs, Projects, Users, Agile/Sprints, Metadata
πŸ§ͺ Jira Data Center Simulator Node.js mock server mimicking real Jira REST API v2 β€” 3 projects, 12 seeded issues, Kanban dashboard
πŸŒ‰ On-Premises Gateway Integration Connects Power Platform cloud to your on-prem Jira with zero VPN required
πŸ”„ 5 Flow Wrappers Get Issue, Search Issues, Create Issue, Add Comment, Transition Issue β€” the secret sauce for Copilot Studio
πŸ€– Copilot Studio AI Agent Natural-language Teams chat β†’ JQL β†’ real Jira tickets
πŸ“‹ SharePoint Integration SharePoint list item created β†’ Jira ticket auto-created
πŸ“š Complete Documentation Step-by-step setup, screenshots, troubleshooting, production switch guide

πŸ—οΈ Architecture

Teams User  ─→  Copilot Studio  ─→  Power Automate  ─→  Custom Connector  ─→  Gateway  ─→  Jira DC
(natural       (AI Agent)         (Flow Wrapper)       (45 Actions)         (On-Prem)   (REST API)
 language)

πŸ”‘ Key Discovery: The Copilot Studio Gateway Bug

Copilot Studio throws "Setting 'gateway' cannot be null" when calling custom connectors with on-prem gateway directly.

The fix: Wrap each action in a Power Automate flow, then add the FLOW to the agent β€” not the connector.

⚠️ This workaround is not documented anywhere on Microsoft Learn. Discovered during development.


πŸ” Authentication β€” What Actually Works

Method Status Notes
Basic Auth + PAT (Personal Access Token) βœ… Recommended Works everywhere. Username + PAT as password.
Basic Auth + Password ⚠️ Works Legacy. Atlassian discourages.
Bearer Token ❌ Blocked Needs API Key auth β€” not available in all environments.
OAuth 1.0a ❌ Incompatible Jira DC uses 1.0a. Power Automate only supports 2.0.

SSO / M365 login does not affect the connector. SSO is for browser login. The REST API accepts Basic auth + PAT separately β€” two different doors into Jira. Enter the PAT once when creating the connection. No second login, no popups, forever.


πŸš€ Quick Start

Prerequisites

  • Jira Server or Data Center 8.14+ (PAT support required)
  • Power Automate license (Premium or Per-User with attended RPA)
  • Windows machine with network line-of-sight to Jira (for the gateway)
  • Node.js 18+ (only if using the simulator)

1️⃣ Test with the Simulator (Optional but Recommended)

cd simulator
npm install
npm start
# Server prints your LAN IP β€” use THAT in the connector, never localhost

Open http://<your-ip>:8080 β†’ Real Atlassian-style dashboard, 3 projects, 12 seeded issues.

2️⃣ Install the On-Premises Data Gateway

  1. Download: aka.ms/on-premises-data-gateway-installer
  2. Install on the machine running Jira (or one that can reach it)
  3. Sign in with your Power Platform account
  4. Verify Online in Power Automate β†’ Data β†’ Gateways

3️⃣ Import the Custom Connector

  1. Power Automate β†’ Data β†’ Custom Connectors β†’ + New β†’ Import an OpenAPI file
  2. Upload connector/apiDefinition.swagger.json
  3. General tab:
    • Host: <your-jira-ip-or-hostname>:8080 (simulator) or jira.yourcompany.com (prod)
    • Scheme: HTTP (simulator) or HTTPS (prod)
    • βœ… Connect via on-premises data gateway
  4. Security tab: Basic authentication
  5. Create connection β†’ Username + PAT β†’ Select your gateway β†’ Done.

4️⃣ Import the Flow Wrappers

Import the 5 flow solutions from flows/ β€” each is a .zip ready for Power Automate.

5️⃣ Deploy the Copilot Studio Agent

  1. Create new agent in Copilot Studio
  2. Topics β†’ Actions β†’ Add action β†’ add all 5 flows (not the connector directly!)
  3. Paste system prompt from agent/system-prompt.md
  4. Turn on Generative orchestration
  5. Publish to Teams

6️⃣ Switch to Real Jira β€” 3 Changes Only

Setting Simulator Real Jira
Host 10.0.0.4:8080 jira.yourcompany.com
Scheme HTTP HTTPS
Password test Your real Jira PAT

The connector, flows, agent, and actions all stay exactly the same β€” only host/scheme/PAT change.


πŸ“¦ The 45 Actions

Click to expand full action list
Category Actions
Issues Search Issues, Create Issue, Get Issue, Update Issue, Delete Issue, Assign Issue, Bulk Create Issues
Comments Get Comments, Add Comment, Update Comment, Delete Comment
Transitions Get Available Transitions, Transition Issue
Worklogs Get Worklogs, Add Worklog
Projects List Projects, Get Project, Get Components, Get Versions, Get Statuses
Users Current User, Get User, Search Users, Get Assignable Users
Agile Get Boards, Get Sprints, Get Sprint Issues, Get Backlog, Get Epic Issues
Metadata Get Priorities, Get Statuses, Get Issue Types, Get Fields, Get Filters, Get Dashboards

πŸ“ Repository Structure

JiraBridge-OnPrem/
β”œβ”€β”€ connector/                      # The custom connector
β”‚   β”œβ”€β”€ apiDefinition.swagger.json  # OpenAPI 2.0 spec (45 actions)
β”‚   β”œβ”€β”€ apiProperties.json          # Auth config (Basic + PAT)
β”‚   β”œβ”€β”€ settings.json               # paconn CLI deployment
β”‚   └── icon.png                    # Connector icon
β”œβ”€β”€ simulator/                      # Jira DC mock server
β”‚   β”œβ”€β”€ server.js                   # Express app, REST API v2
β”‚   β”œβ”€β”€ data/seed.json              # 3 projects, 12 issues
β”‚   β”œβ”€β”€ public/                     # Atlassian-style dashboard
β”‚   └── package.json
β”œβ”€β”€ flows/                          # 5 Power Automate flow wrappers
β”‚   β”œβ”€β”€ Jira-GetIssue.zip
β”‚   β”œβ”€β”€ Jira-SearchIssues.zip
β”‚   β”œβ”€β”€ Jira-CreateIssue.zip
β”‚   β”œβ”€β”€ Jira-AddComment.zip
β”‚   └── Jira-TransitionIssue.zip
β”œβ”€β”€ agent/                          # Copilot Studio AI agent
β”‚   β”œβ”€β”€ system-prompt.md            # Agent instructions
β”‚   β”œβ”€β”€ topics/                     # Example topics
β”‚   └── setup-guide.md
β”œβ”€β”€ examples/                       # Real-world scenarios
β”‚   β”œβ”€β”€ sharepoint-to-jira.md       # SPO list β†’ Jira ticket
β”‚   β”œβ”€β”€ email-to-jira.md            # Outlook β†’ Jira
β”‚   └── sample-jql-queries.md
β”œβ”€β”€ docs/                           # Deep-dive guides
β”‚   β”œβ”€β”€ architecture.md
β”‚   β”œβ”€β”€ authentication.md
β”‚   β”œβ”€β”€ gateway-setup.md
β”‚   β”œβ”€β”€ copilot-gateway-bug-fix.md  # ⭐ The undocumented fix
β”‚   β”œβ”€β”€ going-to-production.md
β”‚   └── troubleshooting.md
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
β”‚   └── workflows/                  # Swagger validation CI
β”œβ”€β”€ CHANGELOG.md
β”œβ”€β”€ CONTRIBUTING.md
β”œβ”€β”€ LICENSE
└── README.md

🎬 Live Proof

βœ… SharePoint list item created β†’ Jira ticket SEC-57 auto-created in 0 seconds βœ… Power Automate manual trigger β†’ Jira ticket INFRA-111 created with Bug/High/Assigned βœ… Copilot Studio agent in Teams: "Show all bugs in INFRA" β†’ returns INFRA-102, INFRA-100 with status and priority βœ… Natural language create: "Create a high priority bug in SEC for suspicious login" β†’ SEC-58 created

See docs/screenshots/ for the full proof gallery.


πŸ› οΈ Troubleshooting

Symptom Fix
401 Unauthorized from Jira PAT expired or wrong username. Regenerate PAT, use email/username (not display name).
"Setting 'gateway' cannot be null" in Copilot Studio Expected! Use flow wrappers instead of the connector directly. See docs/copilot-gateway-bug-fix.md.
Gateway shows Offline Restart the gateway service: services.msc β†’ On-premises data gateway service β†’ Restart.
Connector can reach simulator at localhost but not LAN IP Simulator must bind 0.0.0.0, not 127.0.0.1. Check server.js.
404 on /rest/api/2/* endpoints against real Jira Your Jira is pre-8.14 or REST is disabled. Upgrade or enable.

Full troubleshooting guide: docs/troubleshooting.md


πŸ—ΊοΈ Roadmap

  • Add Confluence on-prem companion connector
  • Bitbucket Server actions
  • Bidirectional sync template (Jira β†’ SharePoint status updates)
  • Terraform / Bicep for gateway VM provisioning
  • MCP server wrapper (natural language from Claude Desktop / any LLM)

🀝 Contributing

PRs welcome! See CONTRIBUTING.md for the flow. Especially valuable:

  • Additional flow wrappers (worklogs, sprint management, bulk ops)
  • Real-world Copilot Studio topic examples
  • Translations of the README
  • Fixes for Jira Server versions < 8.14

πŸ“„ License

MIT Β© 2026 Kerolos β€” Power of Automation

Use it, fork it, ship it. Attribution appreciated but not required.


πŸ™ Credits & Related Work

Built as part of the Power of Automation 2026 series. Related repos:


⭐ If This Saved You Weeks of Work

Star the repo Β· Share the blog post Β· Tag me on LinkedIn

Built for the enterprises Microsoft forgot. πŸ›‘οΈ

About

πŸŒ‰ The Jira on-prem connector Microsoft never built. Free, production-ready, 45 actions, AI-powered. Connect Jira Server/Data Center to Power Automate & Copilot Studio with zero middleware fees. Built for the enterprises behind the firewall.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors