Change a standard issue type to Sub-task on Jira Cloud

Our scenario is as follows:

  1. An issue is originally created as a standard issue type (e.g., Task, Story) on the source Jira Cloud instance.

  2. That issue is successfully synchronized and created on the destination Jira Cloud instance.

  3. After the initial sync, the issue type on the source side is changed from a standard issue type to a Sub-task.

  4. We would like this issue type change (standard → sub-task) to be reflected on the destination side through synchronization.

However, when trying this in practice, we encountered the following error and the change was not reflected on the destination side:

Could not update work item XXX-XXX with id 40XXX:
Given parent work item does not belong to appropriate hierarchy.;
Field pid: Issues with this Issue Type must be created in the same project as the parent..
Check the documentation for more details.

After reviewing the official documentation and community discussions, we understand that:

  • Synchronizing standard issues to standard issues is supported.

  • Synchronizing sub-tasks (while preserving parent relationships when the parent already exists) is supported.

However, we could not find any clear official guidance on whether Exalate supports reflecting an issue type change from standard issue to sub-task after the initial sync.

Could you please clarify the following points?

  1. In Exalate Cloud (Jira Cloud ↔ Jira Cloud), if an issue’s type is changed from a standard issue to a Sub-task on the source side after it has already been synchronized, is this scenario officially supported by Exalate?

  2. If this use case is not supported or not recommended, could you please explain the reason
    (for example, limitations of Jira Cloud, Exalate design principles, consistency constraints, etc.)?

  3. If it is supported under specific conditions, are there any officially recommended approaches, limitations, or best practices we should be aware of?

Since this behavior may have a significant impact on production usage, we would appreciate your answer from the perspective of official supportability, rather than whether it is technically achievable through custom scripting.

Thank you in advance for your clarification.

Best regards,

Great question! Here’s what’s officially supported and recommended regarding changing an issue type from a standard issue to a sub-task in Jira Cloud after initial synchronization with Exalate:

  1. Is this scenario officially supported?
    Exalate supports syncing tasks and subtasks (including parent-child relationships) between Jira Cloud instances, but the documentation and scripting examples focus on syncing issues that are created as subtasks from the start. There is no official documentation confirming support for dynamically changing an issue’s type from a standard issue to a sub-task after the initial sync and having that change reflected automatically on the destination side. The process relies on the parent-child relationship being established at creation and both the parent and sub-task being in sync (see docs).

  2. If not supported, why?
    The main limitation comes from both Jira Cloud and Exalate’s design:

    • Jira Cloud enforces strict hierarchy and project constraints for sub-tasks (e.g., sub-tasks must be in the same project as their parent).
    • Exalate’s sync logic for subtasks expects the parent-child relationship to be set up at the time of creation. Changing an issue’s type after sync can break this logic, especially if the parent issue isn’t already synchronized or if the project constraints aren’t met.
    • Attempting to change the type post-sync can result in errors like the one you encountered, as the destination instance may not be able to re-parent or re-type the issue due to these constraints.
  3. Are there recommended approaches or best practices?

    • If you need to sync sub-tasks, it’s best to ensure the issue is created as a sub-task on the source side before the initial sync.
    • If you must change an issue from standard to sub-task after sync, you would need to ensure the parent issue is already synchronized and that both issues are in the same project on the destination side. Even then, this is not an officially documented or recommended workflow, and you may encounter errors or require custom scripting.
    • The official documentation provides scripting examples for syncing subtasks, but these are intended for initial creation, not for post-sync type changes (see example).

Summary:
Changing an issue from a standard type to a sub-task after it’s already been synchronized is not an officially supported or recommended scenario in Exalate for Jira Cloud. This is due to both Jira’s and Exalate’s handling of issue hierarchies and synchronization logic. For reliable results, always establish the correct issue type and parent-child relationship before the initial sync.

You can find more details and best practices in the official documentation:

Hope this clarifies things!

Have you tried the suggestion here:

if(firstSync && replica.parentId){
    issue.typeName     = "Sub-task" //Make sure to use the right subtask type here.
	def localParent = nodeHelper.getLocalIssueFromRemoteId(replica.parentId.toLong())
	if(localParent){
		issue.parentId = localParent.id
	} else {
       throw new com.exalate.api.exception.IssueTrackerException("Subtask cannot be created: parent issue with remote id " + replica.parentId + " was not found. Please make sure the parent issue is synchronized before resolving this error" )
    }
}