Click here to download the certificate.
After you click the link, you will see this screen.
Please click the link and the certificate .zip file will download.
Plum-CRM Installation and User Guide
Step 1: Salesforce Installation
Step 1.1a: Adding digital certificate in Connected app
Step 1.1b: Finding the client key
Step 1.1c: Allowing Oauth access
Step 1.1d: Edit the Case Page Layout
Step 1.1e: Add tabs on menu bar
Step 1.1f: Add permission set to all users
Step 1.1h: Custom Logs in Salesforce
Step 1.1i: Setup Create/Update Jira button for Custom object
Step 1.1j: Setup Link/Unlink button on custom object
Step 1.1k: Setup trigger on custom object
Step 1.2 : Salesforce Post Installation Steps for Classic:
Step 1.2a: Adding digital certificate in Connected app
Step 1.2b: Finding the client key
Step 1.2c: Allowing Oauth access
Step 1.2d: Edit the Case Page Layout
Step 1.2e: Add tabs on menu bar
Step 1.2f: Add permission set to all users
Step 1.2h: Custom Logs in Salesforce
Step 1.2i: Setup Create/Update Jira button for Custom object
Step 1.2j: Setup Link/Unlink button on custom object
Step 1.2k: Setup trigger on custom object
Salesforce Installation Checklist
Create a Salesforce Case from Jira
Create a Jira Issue from a Salesforce Case
Advanced Configuration Options
Field Mapping Advanced Options
Field Mapping Value Translation
Setup trigger on Custom object
Setup Create/Update Jira button for Custom object:
Assign Account/Contact to an existing Case
The Goldfinger CRM Application provides tighter collaboration between support teams and sales teams. The Goldfinger CRM Application displays CRM data in Jira issues and Jira data in Salesforce screens, sharing timely knowledge between two otherwise disparate teams, running in a multi-tenant scalable environment that can support all deployed Atlassian customers in a single Kubernetes cluster.
A typical use case is an agent using Salesforce will record a case reported by a customer. To work the case Engineering must get involved so the agent syncs the case to a JIra project. The project manager is notified of the new issue and assigns the work to an engineer. As the engineer works on the issue they may request the agent to get a log file from a customer. Instead of using email or phone to communicate with the agent, the engineer will enter a comment in the Jira issue which will appear as a comment in the Salesforce case. When the agent receives the log file from the customer it's attached to the salesforce case, which is synchronised to the Jira issue for use by the engineer. As work progresses status is changed on the Jira issue which is synched to the salesforce case, and when the issue is resolved the agent is notified of the fix which can then be sent on to the end customer.
The Service Account(s) chosen on the configuration screen cannot be used to create or edit issue data. This is also a best practice, i.e., only human users (not service account and not administrators) should be used to edit issue data. |
The installation of the application is performed in three steps.
The Goldfinger CRM app is available from the Salesforce Appexchange:
https://appexchange.salesforce.com/appxSearchKeywordResults?keywords=goldfinger
If you don’t have it yet, create a Salesforce Org and make sure that you have admin access. Then install the Salesforce managed package for all users which will install the necessary objects like the triggers and custom fields and screens.
Step 1.1 : Salesforce Post Installation Steps for Lightning
After the package has been installed click on configure for the Goldfinger CRM App:
Click on the “Create Connected App” button. This screen will appear. Enter the service user profile name and press the Confirm button.
1. Click on Setup
2. Search for Apps
3. Scroll down to Connected Apps section and click on Edit link next to Goldfinger_Holdings connected app
4. Select Use Digital Signatures checkbox from API section
5. Click on Choose file and select the certificate named “prod_server.crt“.
The CRT file can be downloaded from the Getting Started tab on the Jira configuration screen by clicking on the “Public Key” link. |
6. Click on Save button to save the certificate.
4. After authentication this will display the consumer key that is needed on the Jira configuration “Getting Started” tab.
There are two panels the administrator can use to manage the settings for the Goldfinger CRM.
The Authentication Settings panel is used to configure the callback credential settings. These settings are used to push changes in Salesforce to Jira.
The Jira Api field must be set using the value from the below Jira configuration screen.
The Jira Gateway Server must be set to “https://crm.goldfingerholdings.onl".
The Goldfinger CRM Configuration Panel is used to set the automatic triggers that send modified data to Jira. Also a where clause can be entered to limit the Case records that are sent to Jira.
The steps to add these panels to your layout are:
2. Click on Add more items button:
3 . Search for “CRM“ and select the tabs, click on add button:
Read only access must be added (via a permission set) to all users so their synchronisation to Jira will work. The Admin user must provide access to our application settings to profiles or users by the following steps:
To assign permission set to all users:
1. Go to Setup and Open Installed Packages
2. Click on Configure next to Goldfinger CRM App
3. You will see below page:
4. Click on Assign Permission button, this will assign CRM permission set to all users.
To assign permission set to some users:
1.Go to the user detail page for who we want to provide access:
2. Scroll down to Permission set Assignment section and Click on Edit Assignments button under Permission set assignments
3. Select Goldfinger CRM Permission set and add it to Enabled permission set section
4. Click on Save button:
Did you forget this step? If you see this error in your log: 'GHPC.PushCaseDetailsBatch' for job id '7075x0000GkwRJL' : no protocol: null/rest/api/1/create-issue?user=005f20000079yiR&recordType=Case&source=salesforce&api-key=null&recordid=5005x00001olGPO Or if you tried to sync to Jira using the “Sync Jira” link and you see this response “Failed to update the issue due to the error null”. You probably forgot to do the previous setup step. Please add the permission set “CRM Permission” to your user’s profile. |
We have a tab “CRM Authentication Details“ which is used to configure Jira Secret Key and URL, on new installation of package by default System Administrators will have access to this tab. If you want to provide access of this tab to some other profile other than an administrator then please follow below steps:
Provide Access to the profile
Set profile name in Custom setting
By default, we have enabled the custom logging mechanism in salesforce which stores all API logs and Exception logs in the “Goldfinger CRM Log” object. We use these logs to troubleshoot any issues/exceptions in the integration. We store the most recent 2 weeks of logs in Salesforce.
i. To enable/disable the logs please follow these steps:
ii. To view the Logs, open Goldfinger CRM Logs tab:
iii. Export Goldfinger CRM logs:
1. Go to Setup
2. Search for Data Export
3. Click on Export Now button
4. Search and Select “GHPC__Plum_CRM_Logs__c” object
5. Click on the Start Export button.
6. You will receive an email with a download link once the export is ready.
7. Click on the download link
To set up create/Update Jira button for custom objects, please follow the below steps:
/apex/GHPC__CreateJiraCustomObj?Id={!GFH_Options__c.Id}
Note: Replace GFH_Options__c with your custom object name.
To sync a custom object with Jira we have to set up a trigger on the custom object, please follow the below steps to setup the trigger:
GHPC.ProcessCustomObject pc = new GHPC.ProcessCustomObject();
pc.sObjectList = trigger.isDelete?trigger.old:trigger.new;
database.executeBatch(pc,10);
Note: By default, the trigger will work on “before insert” event, update this trigger event to “after insert”. Also, make trigger work on the Update event just add “after update” keyword for ex:
trigger SyncCustomObjWithJira on GHPC__GFH_Options__c (after insert,after update) {
Enable Chatter and Attachment sync for custom objects:
After the package has been installed click on configure for the Goldfinger CRM App:
Click on the “Create Connected App” button. This screen will appear. Enter the service user profile name and press the Confirm button.
2. Search for Apps
3. Scroll down to Connected Apps section and click on Edit link next to Goldfinger_Holdings connected app
4. Select Use Digital Signatures checkbox from API section
5. Click on Choose file and select the certificate named “prod_server.crt“.
The CRT file can be downloaded from the Getting Started tab on the Jira configuration screen by clicking on the “Public Key” link. |
6. Click on Save button to save the certificate.
There are two panels the administrator can use to manage the settings for the Goldfinger-CRM.
The Authentication Settings panel is used to configure the callback credential settings. These settings are used to push changes in Salesforce to Jira.
The Jira Api field must be set using the value from the below Jira configuration screen.
The Jira Gateway Server must be set to “https://crm.goldfingerholdings.onl".
The Plum-CRM Configuration Panel is used to set the automatic triggers that send modified data to Jira. Also a where clause can be entered to limit the Case records that are sent to Jira.
The steps to add these panels to your layout are:
Read only access must be added (via a permission set) to all users so their synchronisation to Jira will work. The Admin user must provide access to our application settings to profiles or users by the following steps:
To assign permission set to all users:
To assign permission set to some users:
2. Scroll down to Permission set Assignment section and Click on Edit Assignments button under Permission set assignments
3. Select Goldfinger CRM Permission set and add it to Enabled permission set section
4. Click on Save button:
Did you forget this step? If you see this error in your log: 'GHPC.PushCaseDetailsBatch' for job id '7075x0000GkwRJL' : no protocol: null/rest/api/1/create-issue?user=005f20000079yiR&recordType=Case&source=salesforce&api-key=null&recordid=5005x00001olGPO Or if you tried to sync to Jira using the “Sync Jira” link and you see this response “Failed to update the issue due to the error null”. You probably forgot to do the previous setup step. Please add the permission set “Plum CRM Permission” to your user’s profile. |
We have a tab “Plum CRM Authentication Details“ which is used to configure Jira Secret Key and URL, on new installation of package by default System Administrators will have access to this tab. If you want to provide access of this tab to some other profile other than an administrator then please follow below steps:
Provide Access to the profile
3. Open the profile you want to provide access to for ex. System Administrator
4. Click on Edit button and Search for “Custom tab Settings”
5. Make Sure Plum CRM Authentication Settings tab value is set to “Default On”.
6. Click on the Save button.
7. If you want to provide access to another profile, repeat steps 1 to 6.
Set profile name in Custom setting
3. Click on Manage link next to Plum CRM Settings.
4. Click on Edit
5. Go to the Profile Names field and enter the name of the profile you want to provide access for ex. System Administrator.
6. Click on Save button
7. If you want to provide access to multiple profiles, then enter the comma-separated profile names.
Now all the users under that profile should have access to Plum CRM Authentication Settings tab:
By default, we have enabled the custom logging mechanism in salesforce which stores all API logs and Exception logs in the “Goldfinger CRM Log” object. We use these logs to troubleshoot any issues/exceptions in the integration. We store the most recent 2 weeks of logs in Salesforce.
i. To enable/disable the logs please follow these steps:
ii. To view the Logs, open Goldfinger CRM Logs tab:
iii. Export Plum CRM logs:
1. Go to Setup
2. Search for Data Export
3. Click on Export Now button
4. Search and Select “GHPC__Plum_CRM_Logs__c” object
5. Click on the Start Export button.
6. You will receive an email with a download link once the export is ready.
7. Click on the download link
To set up create/Update Jira button for custom objects, please follow the below steps:
/apex/GHPC__CreateJiraCustomObj?Id={!GFH_Options__c.Id}
Note: Replace GFH_Options__c with your custom object name.
/apex/GHPC__LinkToJiraIssueVF?id={!GHPC__GFH_Options__c.Id}
Note: Replace GFH_Options__c with your custom object name.
To sync a custom object with Jira we have to set up a trigger on the custom object, please follow the below steps to setup the trigger:
GHPC.ProcessCustomObject pc = new GHPC.ProcessCustomObject();
pc.sObjectList = trigger.isDelete?trigger.old:trigger.new;
database.executeBatch(pc,10);
Note: By default, the trigger will work on “after insert” event, update this trigger event to “after insert”. Also, make trigger work on the Update event just add “after update” keyword for ex:
trigger SyncCustomObjWithJira on GHPC__GFH_Options__c (after insert,after update) {
Enable Chatter and Attachment sync for custom objects:
Before proceeding be sure you followed these steps:
The next step is to install the application in Jira using its 'Manage Apps' features.
Step 1: Search for the CRM application using 'Find new apps'.
Step 2: In the search box enter Goldfinger and select the CRM application.
Step 3: Click on the Configure button and then enter your customer information and press “Submit Information”.
Step 4: Scroll down to the “App' section and enter your credentials to use for the synchronisation of data.
Note: The service accounts must be reserved for the synchronisation. |
Set API Key in Salesforce
Once you install and configure Jira, “Getting Started“ tab, at the bottom you will find the API key which we need to configure into Salesforce:
Step 1: Copy the API Key from the Jira configuration screen:
Step 2: Go to Salesforce and open “Goldfinger (Plum) CRM Authentication Settings”.
Step 3: Enter the copied API key into “Jira Api secret“ field and Enter Jira Gateway Server as “https://crm.goldfingerholdings.onl
Have you been using our CRM plugin on your Jira server? You can use the migration feature from Atlassian to migrate your Jira data from an on-premise Jira server to Jira cloud. There is a feature in the new Cloud CRM plugin to convert your existing data to Jira cloud.
There are two areas of CRM data migration when moving to Jira cloud. The first are your configuration settings - configuration of your records (e.g. Salesforce Cases to Jira bugs), configuration of your field mappings, and settings for comment and attachment configuration. The second is the conversion of your Salesforce data as shown in Jira such as Case, Account, and Contact information in your Jira issues and associated links to Salesforce records.
The steps to migrate the on-premise CRM plugin to the Cloud are:
Enter your Salesforce credentials and press Validate.
Your issue key stored in Salesforce could be a complete url (as above) or it could be just the issue key (e.g. SF-176).
The other approach to a migration is to export your On-premise Jira database into a csv file and use this to re-create the links in Jira to the related Salesforce record.
QA-239,a022C000006w82tQAA
QA-239,0032C00000fWDrRQAW,0032C00000fWmRQAW
The data can be exported from Jira using a database query, eg,
select concat (p.PROJECT_KEY,'-',a.issuenum), b.stringvalue from jiradbschema.project_key p,jiradbschema.jiraissue a, jiradbschema.customfieldvalue b where a.id=b.issue and b.CUSTOMFIELD=<custom-field-id> and p.PROJECT_ID = a.PROJECT
Note the id of the custom field must be looked up in the custom field configuration screen in your On-premise Jira.
Once you have exported the file enter the Salesforce record type (eg Case), and select your csv file, and press the :Start Migration button”:
As discussed above in the Introduction there are two primary use cases - create a Case in Salesforce and sync the Case to Jira as a Bug, or create a Bug in Jira and sync the Bug to Salesforce creating a new Case.
For example when you create a Bug in Jira it is automatically synchronised to Salesforce, and the Jira issue now contains a link to the Salesforce Case.
You can also click on “Open CRM Details” to see additional functions.
The “Resync Jira Issue” will sync the issue to Salesforce again (maybe the previous sync failed).
The “Link To CRM” allows you to lookup a record in Salesforce and link it to the Jira issue. The record could be a Case, Account, Contact, or any other type. Configuring a new record type on the “Record Setup” configuration screen will add that record type to this select list.
The “Linked Records” section will show all the Salesforce records linked to this issue. The format of the data displayed can be configured in the “Record Setup” configuration screen
The following illustrates the result of linking an Account to the Jira Issue.
A Salesforce user can also create a Jira issue by first creating a case in Salesforce. This will then create an issue in Jira - a clone of the Salesforce case. The Case can be synched to Jira automatically using a Case trigger, or manually by pressing the “Sync Jira” link.
Note there is a custom field on the Case record - “Jira Issue Key”. This is used to track the Jira issue that is linked to this Case. Do not edit this field. |
A Jira user might want to find all the Jira tickets linked to a specific Salesforce case, to a specific Salesforce contact, or a specific Salesforce account. This can be accomplished using the following jql queries:
JQL | Purpose |
JQL | Purpose |
issue.property[crm].case=3348 | Find all Jira issues linked to the case #3348. Dont include the leading zeroes. |
Issue.property[crm].case-text ~ 12-3348 | Find issues when your CaseNumber field is not all numeric digits. |
issue.property[crm].account ~ Acme | Find all Jira issues linked to the account Acme |
issue.property[crm].contact ~ George | Find all Jira issues linked to the contact George |
issue.property[crm].opportunity ~ “Doug’s Sale” | Find all Jira issues linked to this opportunity |
The CRM Application has many configuration options though the defaults were carefully chosen to ease the initial setup. This section describes the various configuration options.
Option Name | Description | Notes |
Customer Information | Person requesting the install | |
Salesforce/Application | Select Salesforce | Support for other applications will be added in future releases |
Salesforce/Application Url | Enter Salesforce Url | https://login.salesforce.com or https://test.salesforce.com |
Jira/Sync Service Account | Enter the account id of the Jira service account | If this field is empty the installer account will be used as the service account. |
Salesforce/Sync Service Account | Username of Salesforce service account to sync data | This account MUST be reserved for data sync |
Salesforce/Credentials | Salesforce Client Id | Created in the first install step described here |
Jira/Jira Projects To Sync | Which projects should be sync to CRM? Leave this empty to sync all projects. | |
Salesforce/Jira Projects To Sync | Default Jira Project | When creating a new JIRA issue from CRM, if a project is not specified this value is used. |
Jira/API Key | A generated field. The api key that is used to push data from Salesforce to Jira. | Enter this value in the Salesforce Custom Setting Authentication Detail. |
Option Name | Description | Notes |
Name | Name to uniquely identify this CRM Record Definition | |
CRM Object | Table name in the CRM database which contains the records that JIRA issues will be linked with. | For example, Case |
Jira Object | Jira issue type which contains the record that the CRM issue will be linked with. | For example, Bug |
CRM Parent Object | If you want to link multiple JIRA issues to a single CRM record (a.k.a. many-to-one) you can use a CRM custom object to hold the data from all the linked JIRA issues. One or more JIRA issues will be linked to a single record in the parent object (the 'CRM Object' field) and a record will be created in this child object for each JIRA issue. | For example:
And pressing the Create/Update Jira button on a Case will create a Jira record and its linked to a new child record (that’s linked to the Case). |
CRM Parent ID Field | For many-to-one choose the field that links the child object to the parent object. | For example Case__c |
Issue Name Field | For many-to-one choose the field in the parent object that will be used to set the name of the child object. | For example Subject |
Editable By | Jira user group is permitted to change the CRM records linked to an issue. | |
Viewable By | Jira user group permitted to view the values from the linked Salesforce record | |
Display Fields | When viewing an issue in JIRA that is linked to CRM, these are the values displayed. You can specify custom screen labels by using parenthesis after each field. | Example: "Name(Name), email_address(Email)". Display multiple fields together using square brackets. Example: "[FirstName, LastName](Name)" |
Name Fields | Name of field(s) used for displaying and sorting this record. | |
Search Fields | Name of text field(s) used for searching for a CRM record. Used by the CRM search while editing an issue in JIRA. | |
URL | A URL used to link CRM info on JIRA screens to the record in the CRM system. Put CRM field names inside curly braces where you need to insert CRM values. | For example: https://login.salesforce.com/{Id}. '{Id}' will be replaced with the appropriate CRM record id |
Where Clause | A Salesforce SOQL expression used to limit the CRM records that are listed when searching for CRM records on JIRA's CRM Details screen. | Example: Type='Prospect'. Note that the Cron Service is not affected by this setting, it has its own setting below. |
Issue Condition | This feature gives you a way to automatically create a new CRM record when a specified condition is met for an issue in JIRA. A new CRM record is only created if the issue is not already linked to a CRM record of this type and the issue meets the condition specified here. | The JQL Picker is used to help the user create a valid JQL and see the search results |
Sync Jira Comments To CRM | Always, Sometimes, Never | If set to Sometimes the comment will be synched if the comment body contains the tag #crm |
Sync Comments As | Chatter or Case Comments | |
Sync Comments As | Private or Public | |
Delete Jira Comments When CRM Comment Is Deleted | Yes or No | |
Comment Title | An optional title for comments sent to CRM. The tokens {FULLNAME}, {DATETIME}, and {KEY} may be added to the title. | |
Sync CRM Comments To Jira | Always, Sometimes, Never | If set to Sometimes the comment will be synched if the comment body contains the tag #jira |
Delete Jira Comments When CRM Comment Is Deleted | Yes or No | |
Delete Private CRM Comment After Its Synched To Jira | Yes or No | |
Comment Title | An optional title for comments sent to Jira. The tokens {FULLNAME} and {DATETIME} may be added to the title. | |
Sync Jira Attachments To CRM | Always, Never | |
Sync Attachments To |
| “Sub Record Attachments” can be used when One Crm To Many Jira is on. |
Delete Synced Attachments | Yes or No | Should the CRM attachment be deleted when the related Jira attachment is deleted |
Sync Attachments To Jira | Always or Never | |
Delete Synced Attachments | Yes or No | Should the Jira attachment be deleted when the related CRM attachment is deleted |
The Field Mapping configuration shows the fields that will be synched.
Clicking on any Jira field (e.g. Summary) will display the edit screen where the desired fields to map can be selected.
For the Alpha release the “Delimiter” option is not implemented. A comma is the assumed delimiter. The feature to change the default delimiter will be available soon. |
Field values can be mapped to different values.
To sync a custom object with Jira we have to set up a trigger on the custom object, please follow the below steps to setup the trigger:
Step 1: Open Developer Console
Step 2: Go to File => New => Apex Trigger
Step 3: Enter any name for the trigger and select the name of custom object you want to sync:
Step 4: Copy and paste the below code inside your trigger and save it.
GHPC.ProcessCustomObject pc = new GHPC.ProcessCustomObject();
pc.sObjectList = trigger.isDelete?trigger.old:trigger.new;
database.executeBatch(pc,10);
Note: By default, the trigger will work on “after insert” event, to make trigger work on the Update event just add “after update” keyword for ex:
trigger SyncCustomObjWithJira on GHPC__GFH_Options__c (after insert,after update)
To set up create/Update Jira button for custom objects, please follow the below steps:
Step 1: Open the custom object on which we want to add the button.
Step 2: Scroll down to Buttons, Links, and Actions section and click on New Button/Action button:
Step 3: Enter the below text into the code editor section:
/apex/GHPC__CreateJiraCustomObj?Id={!GFH_Options__c.Id}
Note: Replace GFH_Options__c with your custom object name.
Step 4: Click on Save and add this button on your page layout.
One of the commonly used features in the on-premise CRM plugin was assigning an Account and/or Contact to a Case as the Case was created using the create screen:
Note that a + was added to the create screen to allow the user to lookup the desired Account.
In Cloud Jira though the customization necessary (such as a google type search) if not available. The solution is to use the CRM Details panel to select and assign an Account to an already linked Case:
And when the Account (NAVEX) is selected it will be added to the Case 00001896.
And if you have multiple Cases linked to the Jira issue you will be prompted to choose which Cases should receive the Account assignment:
Pressing the toggle button will assign the Account to the desired Case.
To configure this feature the following fields have been added to the record setup configuration screen:
These settings would be set on the Account record setup, selecting the Case (to link Account and Cases), the id field in the Case record that stores the Account id, and the “Automatic LInking” checkbox (if checked) will automatically assign the selected Account on the CRM Details screen to all linked Cases. If the checkbox is not checked the user is prompted to select the Case records to assign the Account to.