Microsoft Exchange · Arazzo Workflow

Microsoft Exchange Migrate a Mailbox Item

Version 1.0.0

Pick a source item, export its full MIME content, and import it elsewhere.

1 workflow 1 source API 1 provider
View Spec View on GitHub CalendarCollaborationContactsEmailEnterpriseArazzoWorkflows

Provider

microsoft-exchange

Workflows

migrate-mailbox-item
Export the first item of a source folder and import it into a target folder.
Lists items in the source folder, exports the first item's MIME content, and imports that content into the destination mailbox folder.
3 steps inputs: sourceFolderId, sourceMailboxId, sourceUserId, targetFolderId, targetMailboxId, targetUserId outputs: importedItemId, sourceItemId
1
listItems
listMailboxFolderItems
List items in the source folder, returning the first item identifier to migrate.
2
exportItem
exportMailboxItemContent
Export the full-fidelity MIME content of the first source item.
3
importItem
importMailboxItem
Import the exported MIME content into the destination folder, creating a full-fidelity copy of the item.

Source API Descriptions

Arazzo Workflow Specification

microsoft-exchange-migrate-mailbox-item-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Microsoft Exchange Migrate a Mailbox Item
  summary: Pick a source item, export its full MIME content, and import it elsewhere.
  description: >-
    A full-fidelity migration pattern on the Microsoft Graph import/export API.
    The workflow lists items in a source folder, exports the complete MIME
    content of the first item, and imports that MIME into a destination folder,
    preserving all properties and attachments. The export and import bodies use
    the message/rfc822 media type as defined by the specification. Each step
    inlines its request so the flow can be executed without consulting the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: graphImportExportApi
  url: ../openapi/microsoft-exchange-graph-import-export-openapi.yml
  type: openapi
workflows:
- workflowId: migrate-mailbox-item
  summary: Export the first item of a source folder and import it into a target folder.
  description: >-
    Lists items in the source folder, exports the first item's MIME content,
    and imports that content into the destination mailbox folder.
  inputs:
    type: object
    required:
    - sourceUserId
    - sourceMailboxId
    - sourceFolderId
    - targetUserId
    - targetMailboxId
    - targetFolderId
    properties:
      sourceUserId:
        type: string
        description: The user id or UPN owning the source mailbox.
      sourceMailboxId:
        type: string
        description: The source mailbox identifier.
      sourceFolderId:
        type: string
        description: The source folder identifier to read items from.
      targetUserId:
        type: string
        description: The user id or UPN owning the target mailbox.
      targetMailboxId:
        type: string
        description: The target mailbox identifier.
      targetFolderId:
        type: string
        description: The destination folder identifier to import into.
  steps:
  - stepId: listItems
    description: >-
      List items in the source folder, returning the first item identifier to
      migrate.
    operationId: listMailboxFolderItems
    parameters:
    - name: user-id
      in: path
      value: $inputs.sourceUserId
    - name: mailbox-id
      in: path
      value: $inputs.sourceMailboxId
    - name: folder-id
      in: path
      value: $inputs.sourceFolderId
    - name: $top
      in: query
      value: 1
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      itemId: $response.body#/value/0/id
    onSuccess:
    - name: hasItem
      type: goto
      stepId: exportItem
      criteria:
      - context: $response.body
        condition: $.value.length > 0
        type: jsonpath
    - name: empty
      type: end
      criteria:
      - context: $response.body
        condition: $.value.length == 0
        type: jsonpath
  - stepId: exportItem
    description: >-
      Export the full-fidelity MIME content of the first source item.
    operationId: exportMailboxItemContent
    parameters:
    - name: user-id
      in: path
      value: $inputs.sourceUserId
    - name: mailbox-id
      in: path
      value: $inputs.sourceMailboxId
    - name: folder-id
      in: path
      value: $inputs.sourceFolderId
    - name: item-id
      in: path
      value: $steps.listItems.outputs.itemId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      mimeContent: $response.body
  - stepId: importItem
    description: >-
      Import the exported MIME content into the destination folder, creating a
      full-fidelity copy of the item.
    operationId: importMailboxItem
    parameters:
    - name: user-id
      in: path
      value: $inputs.targetUserId
    - name: mailbox-id
      in: path
      value: $inputs.targetMailboxId
    - name: folder-id
      in: path
      value: $inputs.targetFolderId
    requestBody:
      contentType: message/rfc822
      payload: $steps.exportItem.outputs.mimeContent
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      importedItemId: $response.body#/id
  outputs:
    sourceItemId: $steps.listItems.outputs.itemId
    importedItemId: $steps.importItem.outputs.importedItemId