Skip to content

Atlassian: Bulk move issues

Atlassian issueBulkOperations.submitBulkMove: arguments, response, policy and SDK examples.

← Issue bulk operations operations · Get started

Operation atlassian.submitbulkmove

Provider route: POST /{cloudId}/rest/api/3/bulk/issues/move. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/atlassian with npm, or alter-sdk-atlassian with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { AtlassianIntegration } from "@alter-ai/atlassian";
async function execute(input: Parameters<AtlassianIntegration["issueBulkOperations"]["submitBulkMove"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new AtlassianIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.issueBulkOperations.submitBulkMove(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_atlassian import AtlassianIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = AtlassianIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.issue_bulk_operations.submit_bulk_move(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
pathobjectRequired within parentAdditional keys: not allowed
path.cloudIdstringRequired within parentPattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
bodyModelRequired within parentExpand Bulk move issues — request body — body

Referenced models: Bulk move issues — request body — body

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Bulk edit issues — response body

Referenced models: Bulk edit issues — response body

3 more schemas are linked from the tables above, on the schema pages.

Bulk move issues — request body — body
FieldTypePresenceDescription and constraints
$objectRootIssue Bulk Move Payload
Additional keys: not allowed
sendBulkNotificationJSONOptional
sendBulkNotification (anyOf 1)booleanAlternativeA boolean value that indicates whether to send a bulk change notification when the issues are being moved.

If `true`, dispatches a bulk notification email to users about the updates.
Default: true
write Only: true
sendBulkNotification (anyOf 2)nullAlternative
targetToSourcesMappingobjectRequired within parentAn object representing the mapping of issues and data related to destination entities, like fields and statuses, that are required during a bulk move.

The key is a string that is created by concatenating the following three entities in order, separated by commas. The format is `<project ID or key>,<issueType ID>,<parent ID or key>`. It should be unique across mappings provided in the payload. If you provide multiple mappings for the same key, only one will be processed. However, the operation won't fail, so the error may be hard to track down.

* ***Destination project*** (Required): ID or key of the project to which the issues are being moved.
* ***Destination issueType*** (Required): ID of the issueType to which the issues are being moved.
* ***Destination parent ID or key*** (Optional): ID or key of the issue which will become the parent of the issues being moved. Only required when the destination issueType is a subtask.
Additional keys: see wildcard field
targetToSourcesMapping.*ModelAdditional keysExpand Bulk move issues — request body — body target To Sources Mapping value

Referenced models: Bulk move issues — request body — body target To Sources Mapping value

Bulk edit issues — response body
FieldTypePresenceDescription and constraints
$objectRoot
taskIdJSONOptional
taskId (anyOf 1)stringAlternative
taskId (anyOf 2)nullAlternative
Bulk move issues — request body — body target To Sources Mapping value
FieldTypePresenceDescription and constraints
$objectRootAn object representing the mapping of issues and data related to destination entities, like fields and statuses, that are required during a bulk move.
Additional keys: not allowed
inferClassificationDefaultsbooleanRequired within parentIf `true`, when issues are moved into this target group, they will adopt the target project's default classification, if they don't have a classification already. If they do have a classification, it will be kept the same even after the move. Leave `targetClassification` empty when using this.

If `false`, you must provide a `targetClassification` mapping for each classification associated with the selected issues.

[Benefit from data classification](https://support.atlassian.com/security-and-access-policies/docs/what-is-data-classification/)
write Only: true
inferFieldDefaultsbooleanRequired within parentIf `true`, values from the source issues will be retained for the mandatory fields in the field configuration of the destination project. The `targetMandatoryFields` property shouldn't be defined.

If `false`, the user is required to set values for mandatory fields present in the field configuration of the destination project. Provide input by defining the `targetMandatoryFields` property
write Only: true
inferStatusDefaultsbooleanRequired within parentIf `true`, the statuses of issues being moved in this target group that are not present in the target workflow will be changed to the default status of the target workflow (see below). Leave `targetStatus` empty when using this.

If `false`, you must provide a `targetStatus` for each status not present in the target workflow.

The default status in a workflow is referred to as the "initial status". Each workflow has its own unique initial status. When an issue is created, it is automatically assigned to this initial status. Read more about configuring initial statuses: [Configure the initial status | Atlassian Support.](https://support.atlassian.com/jira-cloud-administration/docs/configure-the-initial-status/)
write Only: true
inferSubtaskTypeDefaultbooleanRequired within parentWhen an issue is moved, its subtasks (if there are any) need to be moved with it. `inferSubtaskTypeDefault` helps with moving the subtasks by picking a random subtask type in the target project.

If `true`, subtasks will automatically move to the same project as their parent.

When they move:

* Their `issueType` will be set to the default for subtasks in the target project.
* Values for mandatory fields will be retained from the source issues
* Specifying separate mapping for implicit subtasks won’t be allowed.

If `false`, you must manually move the subtasks. They will retain the parent which they had in the current project after being moved.
write Only: true
issueIdsOrKeysarrayRequired within parentList of issue IDs or keys to be moved.
write Only: true
issueIdsOrKeys[]stringEach itemwrite Only: true
targetClassificationJSONOptional
targetClassification (anyOf 1)arrayAlternativeList of the objects containing classifications in the source issues and their new values which need to be set during the bulk move operation.

It is mandatory to provide source classification to target classification mapping when the source classification is invalid for the target project and issue type.

* **You should only define this property when `inferClassificationDefaults` is `false`.**
* **In order to provide mapping for issues which don't have a classification, use `"-1"`.**
write Only: true
targetClassification (anyOf 1)[]ModelEach itemExpand Bulk move issues — request body — body target To Sources Mapping value target Classification array item
targetClassification (anyOf 2)nullAlternative
targetMandatoryFieldsJSONOptional
targetMandatoryFields (anyOf 1)arrayAlternativeList of objects containing mandatory fields in the target field configuration and new values that need to be set during the bulk move operation.

The new values will only be applied if the field is mandatory in the target project and at least one issue from the source has that field empty, or if the field context is different in the target project (e.g. project-scoped version fields).

**You should only define this property when `inferFieldDefaults` is `false`.**
write Only: true
targetMandatoryFields (anyOf 1)[]ModelEach itemExpand Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item
targetMandatoryFields (anyOf 2)nullAlternative
targetStatusJSONOptional
targetStatus (anyOf 1)arrayAlternativeList of the objects containing statuses in the source workflow and their new values which need to be set during the bulk move operation.

The new values will only be applied if the source status is invalid for the target project and issue type.

It is mandatory to provide source status to target status mapping when the source status is invalid for the target project and issue type.

**You should only define this property when `inferStatusDefaults` is `false`.**
write Only: true
targetStatus (anyOf 1)[]ModelEach itemExpand Bulk move issues — request body — body target To Sources Mapping value target Status array item
targetStatus (anyOf 2)nullAlternative

Referenced models: Bulk move issues — request body — body target To Sources Mapping value target Classification array item, Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item, Bulk move issues — request body — body target To Sources Mapping value target Status array item

Bulk move issues — request body — body target To Sources Mapping value target Classification array item
FieldTypePresenceDescription and constraints
$JSONRoot
$ (anyOf 1)objectAlternativeClassification mapping for classifications in source issues to respective target classification.
write Only: true
Additional keys: not allowed
$ (anyOf 1).classificationsobjectRequired within parentAn object with the key as the ID of the target classification and value with the list of the IDs of the current source classifications.
write Only: true
Additional keys: see wildcard field
$ (anyOf 1).classifications.*arrayAdditional keyswrite Only: true
$ (anyOf 1).classifications.*[]stringEach itemwrite Only: true
$ (anyOf 1).issueTypestringOptionalID of the source issueType to which issues present in `issueIdOrKeys` belongs.
write Only: true
$ (anyOf 1).projectKeyOrIdstringOptionalID or key of the source project to which issues present in `issueIdOrKeys` belongs.
write Only: true
$ (anyOf 2)nullAlternative
Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item
FieldTypePresenceDescription and constraints
$JSONRoot
$ (anyOf 1)objectAlternativeField mapping for mandatory fields in target
write Only: true
Additional keys: not allowed
$ (anyOf 1).fieldsobjectRequired within parentContains the value of mandatory fields
write Only: true
Additional keys: see wildcard field
$ (anyOf 1).fields.*ModelAdditional keysExpand Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item Field mapping for mandatory fields in target fields value
$ (anyOf 2)nullAlternative

Referenced models: Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item Field mapping for mandatory fields in target fields value

Bulk move issues — request body — body target To Sources Mapping value target Status array item
FieldTypePresenceDescription and constraints
$JSONRoot
$ (anyOf 1)objectAlternativeStatus mapping for statuses in source workflow to respective target status in target workflow.
write Only: true
Additional keys: not allowed
$ (anyOf 1).statusesobjectRequired within parentAn object with the key as the ID of the target status and value with the list of the IDs of the current source statuses.
write Only: true
Additional keys: see wildcard field
$ (anyOf 1).statuses.*arrayAdditional keyswrite Only: true
$ (anyOf 1).statuses.*[]stringEach itemwrite Only: true
$ (anyOf 2)nullAlternative

SDK function policy ID: atlassian.submitbulkmove. Catalog operation: submitbulkmove. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Required provider scopes: ["write:jira-work"]

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.