Proposal Summary
This proposal outlines the development of NetSuite Jira Integration sync, including the field Mapping setup for custom records for Growire Group. The primary objective is to synchronize project details, Epics, Jira Tasks, and Time tracking between NetSuite Custom records and Jira. The proposed solution aims to facilitate one directional syncing of project and task details between NetSuite and Jira, with additional field mapping configuration setup for custom records.
Requirement
Growire Group is looking to integrate NetSuite and Jira to sync Project and task details, along with a configuration setup for custom records. The client prefers this customization to be supportive of different NetSuite accounts, not account-specific.
Prerequisite
- Jira account with Admin access.
- Jira Admin account’s username.
- API Token.
Deliverable
Custom Record Types
The customization will be developed entirely based on custom records, synchronizing as follows:
| NetSuite | JIRA | Synchronization Direction |
| Project Container (Custom Record) | Jira Project | NetSuite to JIRA |
| Work Order (Custom Record) | Jira Epic Task | NetSuite to JIRA |
| Activities (Custom Record) | Jira Tasks | JIRA to NetSuite |
| Time tracking (Custom Record) | Time tracked on the task | JIRA to NetSuite |
The above-mentioned custom record types will be established through the user interface (UI). We do not recommend creating these custom record types using scripts due to the higher possibility of encountering difficulties and complexity during the development phase. Additionally, configuring the setup would be more complicated for the user.
When creating custom records via the UI, the following fields will be available for each custom record type:
Project Container:
- Project Name
- Project key
- Project Type (Business, Service Desk & Software) – It may vary based on the Jira account.
- Project Lead (Employee).
- Website URL.
- Jira Project Id.
Work Order:
- Issue Type (Always Epic)
- Summary.
- Assignee (Employee)
- Reporter (Employee)
- Jira Task key
- Status
- Start Date
- Due Date
- Project Id
Activities:
- Issue Type (Except Epic)
- Summary
- Assignee (Employee)
- Reporter (Employee)
- Jira Task key
- Resolution field
- Status
- Priority
- Start Date
- Due Date
- Original Estimate
- Total time Spent
- Remaining Time
- Parent Task (Optional)
- Project Id
- Work Order ID
Time Tracking:
- Updated User
- Time Spent
- Time Tracking Jira ID
- Activities ID
- Work order ID
- Project ID
If users wish to add or remove any fields from the custom records, they can do so via the custom record type record through the UI. It is important to note that every time the custom record type setup is updated, users should also update the field mapping configuration record.
Field Mapping Configuration
A field mapping configuration setup will be created using the Custom record, featuring:
A separate field mapping configuration entry will be generated for each custom record type, such as Project, Work Order, Task, and Time Tracking. The configuration setup includes the following Body fields:
- Record Name
- Corresponding Custom Record Id
These fields will be disabled, and users cannot manually update them.
The configuration setup page will feature the following fields on the Sub List:
- NetSuite Field Name: Select the custom field. The field will be fetched from the corresponding records.
- NetSuite Field Script Id: Field id will be sourced from the Custom record.
- Field Type: Field type will be sourced from the Custom record. This is a hidden field.
- Source List-Id: list will be sourced from the Custom record. This is a hidden field.
- Jira Field Id: The mapping field’s ID from Jira.
The configuration user must be an Admin or Technical person with knowledge of this customization. Creating or deleting a mapping record is restricted to prevent mapping difficulties. Users can add new mapping fields via this mapping record setup. The necessary restrictions and validations will be added to the Mapping Record Configuration.
NetSuite Jira Sync
Project Container – Jira Project:
This signifies a synchronization process from NetSuite to JIRA. The synchronization is real-time, meaning that when a user creates or updates the Project Container record in NetSuite, the relevant project details will automatically be created or updated in the corresponding project record in Jira.
Work Order – Jira Epic Task:
Transferring work order details from NetSuite to JIRA involves the creation or update of Jira Epic Tasks triggered by Work Orders in NetSuite. This synchronization is real-time, meaning that when a user creates or updates work orders in the NetSuite account, our customization will automatically create or update Epic issue types in Jira within the corresponding Project.
Activities – Jira Tasks:
The process will fetch the task details from the Jira and updates to the NetSuite. This synchronization operates on a scheduled basis. During execution, it fetches only the recently created or modified issues (Jira tasks) from the Jira account and creates or updates the corresponding NetSuite Activities record. The recently created or modified record is fetched based on the last execution time, which is stored in the NetSuite Custom record or General preferences.
Time tracking – Time tracked on the task:
The flow involves the transfer of time-tracking information from JIRA to NetSuite. Time tracked on JIRA tasks is mirrored in NetSuite. The time-tracking data is also updated or added on a scheduled basis during the execution of the Activities process.
When utilizing fields related to employee records, such as Task Assignee, Reporter, and Time Spent User, identification of the employee is based on the email used in both Jira and NetSuite. It is crucial for users in Jira to correspondingly possess an employee record in NetSuite associated with an identical email ID.
The Project Container record will serve as the primary record and Work Order will be the secondary one, and all other related records will be sub-records on the NetSuite. It signifies that the Project Container will serve as the primary record, with work orders (Epic) being added as sub-lists within the Project Container records. Furthermore, all Activities (Jira Task) will be included as sub-lists within the work order record, and Time tracking will be added as a sub-list within the Activities Record.
The synchronization is processed according to the field mapping established in the configuration record. The mapping fields will be retrieved from the Mapping records. The scheduled process is executed every hour.
Error Handling
A custom record will be created for the Error handling process. Should any error arise during the NetSuite to Jira Sync, the error details will be preserved in the Error Handling custom record, encompassing the following information:
- Error Record.
- Record ID.
- Error message.
- Error details.
- An error occurred Date Time.
- API Request/Response (Optional).
Assumptions
This proposal is based on the following assumptions:
- The field mapping configuration user must be an Admin or Technical person with knowledge of this customization.
- Jira offers all necessary features and APIs to facilitate seamless synchronization from the Jira account to NetSuite.
- It is crucial for users in Jira to correspondingly possess an employee record in NetSuite associated with the identical email ID.
- The data synchronization will encompass all issues that have undergone recent updates or have been newly created. Additionally, issues with a status of “Done” will also be considered during the data sync.
- All development will take place in the new JIRA ‘FGI-Square’ account and the Growire NetSuite developer Account. The Growire team will manage the configuration on the ‘Growire’ JIRA account.
- We anticipate that the necessary prerequisites for development will be furnished by your team.
- If custom lists were generated during development, it’s essential to maintain uniform values for these lists in both NetSuite and Jira, for instance, Project Types and Issue Types. The comparison of values will be based on text.
Notes
- This customization is exclusively dependent on custom records and does not depend on NetSuite standard records except employee record.
- The Custom record type setup will be established through the user interface. Therefore, any necessary updates to the Custom record types should be made within the NetSuite Standard Custom record type setup.
- It’s crucial to emphasize that when updating the custom record type setup, users must also ensure to update the configuration record for field mapping.
- During the Field mapping, the Jira field ID should be accurate ID and it should be the full value of the Jira field id. (Ex: reporter.emailAddress)
- There is no need to synchronize all Jira comments to NetSuite; instead, details from the resolution field can be added to NetSuite. A custom field for Resolution will be added by the Growire team.
- Attachments, such as files and images from Jira, do not need to be synchronized to NetSuite.
- Only one-way synchronization was considered in the first phase, and bidirectional sync can be planned in the next phase.
- Custom Record Multilingual Support, Arrival Window, Check-in/Check-out Functionality, and the external APP will be considered in the next phase of development.
- Error handling will be available exclusively for the NetSuite to Jira Sync process; it was not considered for the Configuration setup in this scope.
- The data sync will only act as a reference in NetSuite for Analytical purposes. This will help the NetSuite users to manually generate Actual time tracking or the invoices which makes financial impacts. Analytical reports will be developed in the next phase.
Risks
- Integration issues with the external Jira system, such as problems related to API compatibility, could potentially lead to delays or failures in the NetSuite Jira Sync. Furthermore, any alterations to the Jira API might affect the NetSuite Jira Sync process.
- While the proposal has been formulated based on our analysis, it’s essential to note that more risks may surface only during the development phase. The Mapping Configuration, particularly regarding dynamic fields and account support, introduces the possibility of encountering additional risks and challenges in the development process.