Atlassian Community integration with JSD

atlassian-community
jsd
marketplace-vendor

#1

We at Wittified have an awesome support team and are using JSD to organize/track that effort.

However, for Atlassian Community the team had to visit https://community.atlassian.com and find/track the questions manually (which meant duplication of work and missed questions). Once the Atlassian Community team announced their API support, I wrote an Atlassian Connect add-on at http://bitbucket.org/wittified/community-everywhere to solve this.

Every 10 minutes this add-on searches community.atlassian.com for specific tags and then ingesting those into our JSD instance. We’re opening this up in case there is any other vendor out there that are also using JSD and have the same issues.

Usage

  1. Simply set it up on your hosting provider (it’s ACE based - so node.js required) and configure it by following the instructions in https://bitbucket.org/wittified/community-everywhere/src/master/README.md?at=master&fileviewer=file-view-default .
  2. Once set up, install it on your JSD Cloud instance and you can start to configure it.

###Configuration
The configuration is done through UI. In the ServiceDesk Project (The descriptor filters it out only to work with ServiceDesk project - see below for more on that) you’ll get a “Atlassian Community” link. Click on that and you should see the following screen:

  1. You’ll need to set up the Request Type that you want things to come in as. Please note that only the summary and description will be filled out so any request types that have any other fields marked as required will not be selectable. We use a request type called “Atlassian Community” which is not in any Request Type Groups so it is hidden from the portal.
  2. Then start adding your tags. Click on “Click here to enter new tag” and add your tag. Repeat for all of your tags.
  3. Once done, wait 10 minutes and start seeing things come through in the JSD instance (the requests will be coming in as “Atlassian Community” or whatever you rename the add-on to):

How does it work?

Community side

On the community side - all of the code is in https://bitbucket.org/wittified/community-everywhere/src/4168504b83252915b37b8277216187fe26be4699/lib/community.js?at=master&fileviewer=file-view-default (There’s not much right now - a single request through the lithium api gives us what we need). We purposefully don’t filter out questions that has been answered since we don’t know who has answered them or if they are correct or not. We dedupe them in the JIRA side (see below).

JIRA Integration

While this is a JSD integration, we use JQL and jiraEntityProperties to track if we’ve seen a question before. In https://bitbucket.org/wittified/community-everywhere/src/master/atlassian-connect.json?at=master&fileviewer=file-view-default you’ll see the issue entity being defined so we can simple query for a given community url before we create the request: https://bitbucket.org/wittified/community-everywhere/src/master/lib/jsd.js?at=master&fileviewer=file-view-default#jsd.js-192 .

**Note: ** JSD doesn’t allow setting JIRA entity properties :frowning: . So we set the property after the JSD request has been created: https://bitbucket.org/wittified/community-everywhere/src/master/lib/jsd.js?at=master&fileviewer=file-view-default#jsd.js-164

JSD Integration

The JSD integration is in 2 parts. First in the atlassian-connect.json we do a condition that filters out the non service desk projects:

{
                         "condition": "project_type",
                         "params": { 
                            "projectTypeKey": "service_desk"
                         }
                     }

And then we also do all of the interactions with the JSD API from within add-on itself through https://bitbucket.org/wittified/community-everywhere/src/master/lib/jsd.js?at=master&fileviewer=file-view-default .

Ingestion

The actually ingestion of everything is done through https://bitbucket.org/wittified/community-everywhere/src/master/utils/Scheduler.js?at=master&fileviewer=file-view-default .

Go ahead and use it.

It’s Apache licensed so if you want to use it, modify it etc go for it. (Feel free to contribute back though :wink: ). If there are any questions/feedback etc - feel free to ping me. (Note of caution: It’s my first React add-on so please be kind.)


#2

Daniel, this is fantastic – thank you!


#3

Awesome! thank you Daniel and Wittified.


#4

#5

Thanks for being awesome and sharing this with the community.


#6

I love the “How it works” section. I love that you explained how you built it. Thanks for sharing this!


#7

Hi! Does this update the tickets as well? E.g. when more people vote on the idea in community, would this automatically update the Jira ticket with the # of votes?
Thanks!