Last updated May 22, 2024

List of all breaking changes to the Java and REST APIs introduced in Jira Software 10.0 and Jira Service Management 6.0

The following table lists all of the breaking changes that have already been introduced to the Jira Software 10.0 and Jira Service Management 6.0 Java and REST APIs. The content of the table is kept up-to-date with everly EAP release of Jira Software 10.0 and Jira Service Management 6.0.

ChangeInstructionsImplemented
Deprecated com.atlassian.jira.issue.table.IssueTable provided by jira-api removedUse com.atlassian.jira.issue.table.IssueTable provided by jira-issue-nav-plugin instead.EAP 02

Removed:

  • com.atlassian.jira.rest.Dates.DateAdapter
  • com.atlassian.jira.rest.Dates.DateTimeAdapter
For marshalling and unmarshalling, use the Jackson-friendly serializers and deserializers:
  • @JsonSerialize(using = Dates.DateSerializer.class)
  • @JsonDeserialize(using = Dates.DateDeserializer.class)
EAP 02
Removed com.atlassian.jira:jira-func-tests-legacyMigrate your code from BaseJIRAWebTest (Junit3) to FuncTestCase (Junit 4+). This module has been deprecated since Jira 7.EAP 02
The doHealthCheck request parameter was removed from the rest/api/2/serverInfo endpoint together with the healthChecks field from the response.Use jira-healthcheck-plugin instead.EAP 02
Removed rest/api/1.0/endpointNo alternative provided.EAP 02

Removed:

  • com.atlassian.jira.rest.v2.issue.project.ProjectRoleBean
  • com.atlassian.jira.rest.v2.issue.project.RoleActorBean

Instead, use:

  • com.atlassian.jira.rest.api.project.ProjectRoleBean
  • com.atlassian.jira.rest.api.project.RoleActorBean
EAP 02
Removed com.atlassian.jira.rest.v1.model.ValueCollectionNo alternative provided.EAP 02
  • com.atlassian.jira.testkit.client.restclient.Response class of jira-testkit-client has been deprecated
  • com.atlassian.jira.testkit.client.RestApiClient.toResponse(...) accepts RestCall functional interface
Use com.atlassian.jira.testkit.client.restclient.ParsedResponse

Use new RestCall interface or lambda in place of method interface instead.
EAP 02
Jira table column update for Oracle and Mysql.No actions required, schema will be migrated on restart.

Impacted tables include: changegroup jiraissue jiraaction
EAP 02
com.atlassian.jira.avatar.AvatarManager
#getAvatarBaseDirectory
Use AvatarManager#readAvatarData() to access avatar data directly.EAP 02
Jira Service Management Upgrade from Groovy 2 to Groovy 4 in AssetsMigrate all groovy code to be compatible with Groovy 4.
Jira Service Management Removal of the http-builder library from Groovy console and scripts.Switch to the native Groovy GET and POST methods.EAP 03
com.atlassian.jira.util.AttachmentConfigUse AttachmentConfigManager#getTemporaryAttachmentDirectory() instead.
com.atlassian.jira.issue.attachment.AttachmentStore

Use alternative methods provided by:

  • AttachmentManager
  • ThumbnailManager
  • AttachmentConfigManager
EAP 03
com.atlassian.jira.util.AttachmentUtils

To create, read, or delete attachment and thumbnail data directly, Use the methods available in AttachmentManager and ThumbnailManager.

To find the temporary attachment directory, use AttachmentConfigManager#getTemporaryAttachmentDirectory().

The attachment and thumbnail directories for a particular issue are no longer exposed. Instead, use:

  • getThumbnailDirectory()
  • getAttachmentDirectory()

To manage individual attachments or store other data elsewhere, use:

  • AttachmentManager
  • ThumbnailManager

getAttachmentStore() - AttachmentStore has been removed.

getTemporaryAttachmentDirectory() - Use AttachmentConfigManager#getTemporaryAttachmentDirectory() instead.

getAttachmentFile and getThumbnailFile methods - Use AttachmentManager and ThumbnalManager eg. AttachmentManager#streamAttachmentContent.

checkValidAttachmentDirectory and checkValidTemporaryAttachmentDirectory - These checks can be omitted. Jira checks the validity of paths during startup.

EAP 03
AttachmentManager#attachmentsEnabled()Use AttachmentConfigManager#isAttachmentsEnabled() instead.EAP 03
AttachmentManager#disableAttachments()No alternative providedEAP 03
AttachmentManager#createAttachmentCopySourceFile and previously deprecated overloads of AttachmentManager#createAttachmentUse Use AttachmentManager#createAttachment(CreateAttachmentParamsBean) instead.EAP 03
com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean#CreateAttachmentParamsBeanInstead, use the provided builder:
com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean.Builder
AttachmentManager#deleteAttachmentDirectory(Issue)To delete an issue, use IssueManager#deleteIssue instead.EAP 03
Remove deprecated REST API endpoint:
GET /rest/api/2/group
provided by
com.atlassian.jira.rest.v2.issue.GroupResource#getGroup
GET /rest/api/2/group ([https://docs.atlassian.com/software/jira/docs/api/REST/9.14.0/#api/2/group-getGroup](https://docs.atlassian.com/software/jira/docs/api/REST/9.14.0/#api/2/group-getGroup) is going to be removed
Use GET /rest/api/2/group/member instead:
[https://docs.atlassian.com/software/jira/docs/api/REST/9.14.0/#api/2/group-getUsersFromGroup](https://docs.atlassian.com/software/jira/docs/api/REST/9.14.0/#api/2/group-getUsersFromGroup "https://docs.atlassian.com/software/jira/docs/api/REST/9.14.0/#api/2/group-getUsersFromGroup")
provided by com.atlassian.jira.rest.v2.issue.GroupResource#getUsersFromGroup
EAP 03
Disabling runtime compilation of JavaServer Pages (JSP).Affected vendors have been contacted.
There is no longer any support for modifying the JSP.
[Public documentation](https://hello.atlassian.net/wiki/spaces/SERVER/pages/3533683978 "https://hello.atlassian.net/wiki/spaces/SERVER/pages/3533683978") will be updated.
EAP 03
Public endpoint DELETE /rest/api/2/version/{id}
provided by
com.atlassian.jira.rest.v2.issue.VersionResource#delete(java.lang.String, java.lang.String, java.lang.String) removed along with public API methods:
com.atlassian.jira.bc.project.version.VersionService#delete(JiraServiceContext, ValidationResult)
com.atlassian.jira.project.version.VersionManager#deleteVersion(ApplicationUser, Version, Option<Version>, Option<Version>)
Use
POST /rest/api/2/version/{id}/removeAndSwap
provided by
com.atlassian.jira.rest.v2.issue.VersionResource#delete(String, DeleteAndReplaceVersionBean)
For the Public API use the following replacements:
com.atlassian.jira.bc.project.version.VersionService#deleteVersionAndSwap
com.atlassian.jira.project.version.VersionManager#deleteVersionAndSwap
EAP 03
Velocity upgraded to 1.6.4.atlassian_28 to receive path traversal preventionN/AEAP 03
Block Velocity file URL access in webapp directoryWe don't use any .vm files in the webapp directory. Not breaking for Jira itself (in theory).EAP 03
com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult#getLicenseVersion()Use #getLicenseDetails().getLicenseVersion() instead.EAP 03
com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult#getTotalUserCount()Use one of the following:
  • com.atlassian.jira.application.ApplicationAuthorizationService#getUserCount(ApplicationKey)
  • com.atlassian.jira.user.util.UserManager#getTotalUserCount()
EAP 03
com.atlassian.jira.bc.portal.PortalPageService#updatePortalPageUnconditionally(com.atlassian.jira.bc.JiraServiceContext, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.portal.PortalPage) removedUse one of the following:
  • #updatePortalPageOwner
  • #updatePortalPage
  • PortalPageManager#update
EAP 03
com.atlassian.jira.bc.project.version.VersionService#validateVersionDetails(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String, java.lang.String) removedUse #validateUpdate(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.bc.project.version.VersionService.VersionBuilder) instead.EAP 03
com.atlassian.jira.bc.project.version.VersionService#validateReleaseDate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String) removedUse #validateUpdate(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.bc.project.version.VersionService.VersionBuilder) instead.EAP 03
com.atlassian.jira.bc.user.UserService#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser, com.atlassian.application.api.ApplicationKey) removedUse UserService#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.user.ApplicationUser,com.atlassian.application.api.ApplicationKey) instead.EAP 03
com.atlassian.jira.bc.customfield.CustomFieldDefinition#CustomFieldDefinition() removedUse com.atlassian.jira.bc.customfield.CustomFieldDefinition#builder to construct the instance.EAP 03
com.atlassian.jira.bc.issue.comment.CommentService#isGroupVisiblityEnabled() renamed to com.atlassian.jira.bc.issue.comment.CommentService#isGroupVisibilityEnabled()Use methods with the visiblity typo corrected to visibility.EAP 03
com.atlassian.jira.bc.issue.comment.CommentService#isProjectVisiblityEnabled() renamed to com.atlassian.jira.bc.issue.comment.CommentService#isProjectRoleVisibilityEnabled()Use methods with the visiblity typo corrected to visibility.EAP 03
com.atlassian.jira.bc.issue.comment.CommentService#isValidCommentData(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String, com.atlassian.jira.util.ErrorCollection) removedUse
#isValidCommentVisibility(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility, com.atlassian.jira.util.ErrorCollection) instead.
EAP 03
com.atlassian.jira.bc.issue.comment.CommentService.CommentParameters#getGroupLevel() and
com.atlassian.jira.bc.issue.comment.CommentService.CommentParameters#getRoleLevelId() removed
Use the method returning Visibility instance:
#getVisibility()
Example of use that returns io.atlassian.fugue.Option<String> instance with appropriate group level value:
getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())
EAP 03
com.atlassian.jira.bc.issue.util.VisibilityValidator#isProjectRoleVisiblityEnabled() renamed to #isProjectRoleVisibilityEnabled()Use methods with the visiblity typo corrected to visibility.EAP 03
com.atlassian.jira.bc.issue.util.VisibilityValidator#isGroupVisiblityEnabled() renamed to #isGroupVisibilityEnabled()Use methods with the visiblity typo corrected to visibility.EAP 03
com.atlassian.jira.bc.issue.util.VisibilityValidator#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, java.lang.String, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String) removedUse #isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, String, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility) instead.EAP 03
com.atlassian.jira.bc.issue.worklog.WorklogInputParameters#getGroupLevel,
com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl#getGroupLevel,
com.atlassian.jira.bc.issue.worklog.WorklogInputParameters#getRoleLevelId,
com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl#getGroupLevel removed
Use the method returning Visibility instance:
#getVisibility()
Example of use that returns io.atlassian.fugue.Option<String> instance with appropriate group level value:
getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())
EAP 03
com.atlassian.jira.bulkedit.BulkOperationManager#getBulkOperations() removedUse getProgressAwareBulkOperations() instead.EAP 03
com.atlassian.jira.bulkedit.BulkOperationManager#addBulkOperation(String, Class) removedUse addProgressAwareBulkOperation(String, Class) instead.EAP 03
com.atlassian.jira.bulkedit.BulkOperationManager#getOperation(String) removedUse getProgressAwareOperation(String) instead.EAP 03
com.atlassian.jira.bulkedit.operation.BulkOperation removedUse com.atlassian.jira.bulkedit.operation.ProgressAwareBulkOperation instead.EAP 03
Removed deprecated audit REST API endpoints:
GET /rest/api/2/auditing/record
POST /rest/api/2/auditing/record

Use the new REST API endpoints instead:

  • GET /rest/auditing/1.0/events
  • GET /rest/auditing/1.0/configuration/coverage
  • GET /rest/auditing/1.0/configuration/retention
  • PUT /rest/auditing/1.0/configuration/retention/file

For more information about the API, refer to Audit log improvements for developers.

EAP 03

Removed deprecated audit API code:

  • com.atlassian.jira.auditing.AssociatedItem
  • com.atlassian.jira.auditing.ChangedValue
  • com.atlassian.jira.auditing.AuditingCategory
  • com.atlassian.jira.auditing.AuditingFilter
  • com.atlassian.jira.auditing.RecordRequest
  • com.atlassian.jira.auditing.AuditRecord

Use the new API code instead:

  • com.atlassian.audit.entity.AuditResource
  • com.atlassian.audit.entity.ChangedValue
  • com.atlassian.jira.auditing.AuditCategory (since Jira 8.12.2)
  • com.atlassian.audit.api.AuditQuery
  • com.atlassian.audit.entity.AuditEvent
  • com.atlassian.audit.entity.AuditEntity

For more information about this change, refer to Migrating to the new Jira audit log Java API.

EAP 03
com.atlassian.jira.issue.search.managers.IssueSearcherManager#getSearcherGroups(com.atlassian.jira.issue.search.SearchContext) removedThe com.atlassian.jira.issue.search.SearchContext parameter is no longer needed. Use #getSearcherGroups() instead.EAP 03
com.atlassian.jira.issue.search.managers.SearchHandlerManager#getSearcherGroups(com.atlassian.jira.issue.search.SearchContext) removedThe com.atlassian.jira.issue.search.SearchContext parameter is no longer needed. Use #getSearcherGroups() instead.EAP 03
com.atlassian.jira.issue.search.managers.SearchHandlerManager#getSearchersByClauseName(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.issue.search.SearchContext) removedThe com.atlassian.jira.issue.search.SearchContext parameter is no longer needed. Use #getSearchersByClauseName(com.atlassian.crowd.embedded.api.User,String) instead.EAP 03
com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext)The com.atlassian.jira.issue.search.SearchContext parameter is no longer needed. Use #getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query) instead.EAP 03
com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper#getAllNavigatorValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext) removedThe com.atlassian.jira.issue.search.SearchContext parameter is no longer needed. Use #getAllNavigatorValuesForMatchingClauses(ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query) instead.EAP 03
com.atlassian.jira.issue.util.IssueUpdateBean#getUser() removedUse #getApplicationUser() instead.EAP 03
com.atlassian.jira.jql.query.AbstractLocalDateOperatorQueryFactory removedUse com.atlassian.jira.jql.util.JqlLocalDateSupport#getLocalDatesFromQueryLiterals(java.util.List) instead.EAP 03
com.atlassian.jira.jql.util.JqlIssueSupport#getIssues(java.lang.String, com.atlassian.jira.user.ApplicationUser) removedUse #getIssue(String,com.atlassian.jira.user.ApplicationUser) instead.EAP 03
com.atlassian.jira.jql.util.JqlIssueSupport#getIssues(java.lang.String) removedUse #getIssue(String) instead.EAP 03
com.atlassian.jira.license.LicenseDetails#getLicenseStatusMessage(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.user.util.UserManager) removedUse #getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper,UserManager) instead.EAP 03
com.atlassian.jira.license.LicenseDetails#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper, com.atlassian.jira.web.util.OutlookDate, java.lang.String, com.atlassian.jira.user.util.UserManager) removedUse #getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper,UserManager) instead.EAP 03
com.atlassian.jira.license.LicenseDetails#isLicenseAlmostExpired() removedUse LicenseDetails#getMaintenanceExpiryDate directly.EAP 03
com.atlassian.jira.bc.whitelist.WhitelistService removedUse com.atlassian.plugins.whitelist.WhitelistService and com.atlassian.plugins.whitelist.OutboundWhitelist instead.EAP 03
com.atlassian.jira.bc.whitelist.WhitelistManager removedUse com.atlassian.plugins.whitelist.WhitelistService and com.atlassian.plugins.whitelist.OutboundWhitelist instead.EAP 03
com.atlassian.jira.mention.MentionService#sendCommentMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.issue.comments.Comment) removedUse #sendCommentMentions(Set,ApplicationUser,Comment,Comment) instead.EAP 03
com.atlassian.jira.mention.MentionService#sendIssueCreateMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.Issue) removedUse #sendIssueCreateMentions(Set,ApplicationUser,Issue) instead.EAP 03
com.atlassian.jira.mention.MentionService#sendIssueEditMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.comments.Comment) removedUse #sendIssueEditMentions(Set,ApplicationUser,Issue,Comment) instead.EAP 03
com.atlassian.jira.plugin.keyboardshortcut.KeyboardShortcutManager#getActiveShortcuts() removedUse #listActiveShortcutsUniquePerContext instead.EAP 03
com.atlassian.jira.plugin.webfragment.conditions.AbstractJiraPermissionCondition removedUse AbstractPermissionCondition instead.EAP 03
com.atlassian.jira.plugin.webfragment.conditions.AbstractPermissionCondition removedUse AbstractProjectPermissionCondition instead.EAP 03
com.atlassian.jira.project.type.ProjectTypesEnabledCondition removedNo replacementEAP 03
com.atlassian.jira.permission.PermissionSchemeManager#getEntitiesByType(org.ofbiz.core.entity.GenericValue, com.atlassian.jira.security.plugin.ProjectPermissionKey, java.lang.String) removedUse #getPermissionSchemeEntries(long,com.atlassian.jira.security.plugin.ProjectPermissionKey,String) instead.EAP 03
com.atlassian.jira.permission.PermissionSchemeManager#getGroups(java.lang.Long, com.atlassian.jira.project.Project) removedUse #getGroups(ProjectPermissionKey,Project) instead.EAP 03

Rate this page: