Breadcrumbs

Behind Firewall

This article guides you through the steps to take for the migration of a behind firewall (email/file exchange) synchronization to a Data Center to Cloud synchronization

Prerequisites

  • You are synchronizing to your partner by email or file exchange

  • There are no errors in the  troubleshooting tab of the configuration. If there are, please solve these first.

Things to Keep in Mind

  • You can't use the behind firewall (over email/file exchange) synchronization in a Data Center to Cloud scenario. You have to use a direct synchronization to the Cloud instance from the other Data Center instance.

  • The Data Center scenario has to configure the synchronization

  • After you migrated the data, it can take some time ( depending on number of work items) before all work items are in sync again

Migration Steps

Primary migrates to cloud

Step-1: Export your synchronization data

  1. Stop the original running synchronizations on the primary and secondary side.

  2. Download the synced issue data for this synchronization (open the synchronization config and click ••• > Download synchronized issues) on both the primary and secondary side.

Step-2: Modify exported data

  1. Open the two files (primary and secondary) with the synced issue data created in step 1.2

  2. Copy all data from the primary file below "firstConnector" as "secondConnector" to the secondary file and save it as a .json file

    Master file example
    {
      "firstConnector": [
        {
          "id": 47,
          "connectorKey": "CON-4-SAM2",
          "localIssueKey": "SAM2-1",
          "remoteIssueKey": "SP2-1",
          "firstSyncDate": 1604663032918,
          "lastOutgoingChange": 1604663098456,
          "lastChangeSeen": 1604654096519,
          "outgoingMessageSequenceId": 2,
          "lastIncomingChange": 1604663109653,
          "incomingMessageSequenceId": 1,
          "comments": [
            {
              "localId": "10019"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
    }
    


    Slave file example
    {
      "firstConnector": [
        {
          "id": 63,
          "connectorKey": "CON-5-SP2",
          "localIssueKey": "SP2-1",
          "remoteIssueKey": "SAM2-1",
          "firstSyncDate": 1604663073350,
          "lastOutgoingChange": 1604663107283,
          "lastChangeSeen": 1604663103895,
          "outgoingMessageSequenceId": 1,
          "lastIncomingChange": 1604663103990,
          "incomingMessageSequenceId": 2,
          "attachments": [
            {
              "remoteId": "10002",
              "localId": "10004"
            }
          ],
          "comments": [
            {
              "remoteId": "10019",
              "localId": "10034"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
    }
    


    Merged file example
    {
      "firstConnector": [
        {
          "id": 63,
          "connectorKey": "CON-5-SP2",
          "localIssueKey": "SP2-1",
          "remoteIssueKey": "SAM2-1",
          "firstSyncDate": 1604663073350,
          "lastOutgoingChange": 1604663107283,
          "lastChangeSeen": 1604663103895,
          "outgoingMessageSequenceId": 1,
          "lastIncomingChange": 1604663103990,
          "incomingMessageSequenceId": 2,
          "attachments": [
            {
              "remoteId": "10002",
              "localId": "10004"
            }
          ],
          "comments": [
            {
              "remoteId": "10019",
              "localId": "10034"
            }
          ],
          "incomingChangesIgnored": false
        }
      ],
      "secondConnector": [
        {
          "id": 47,
          "connectorKey": "CON-4-SAM2",
          "localIssueKey": "SAM2-1",
          "remoteIssueKey": "SP2-1",
          "firstSyncDate": 1604663032918,
          "lastOutgoingChange": 1604663098456,
          "lastChangeSeen": 1604654096519,
          "outgoingMessageSequenceId": 2,
          "lastIncomingChange": 1604663109653,
          "incomingMessageSequenceId": 1,
          "comments": [
            {
              "localId": "10019"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
    }
    


Step-3: Create a new synchronization

  1. Go to the project on the secondary side and start a new sync with the primary project (on cloud)

  2. Upload the synced issue data for this issues in this project that you exported and changed in step 2.2 (click ••• > Pair existing issues > Pair existing issues with Backbone before)

  3. Configure the same issue types, fields, comments and attachments.

    1. Note: if you are using a  user field mapping, make sure to set it to "User Passthrough Mapping (by email)"

Step-4: Start the synchronization

  1. Start the new synchronization

  2. In the new synchronization,  trigger a resync in both directions (with only the summary field, so the resync doesn't take long). This is done in order to recreate the information in the  Sync panel

The resync might still take some time to run through all work items so you won’t see immediate results on all work items. If you want to check how many work items have been updated you can use the backbone attributes in the following JQL filter:

project = PROJECT_NAME and backbone.remoteKey is not empty

  1. Once you have verified everything is working correctly, delete the original synchronization. This will also delete the old information in the sync info panel.

Secondary migrates to cloud

Step-1: Export your synchronization data

  1. Stop the original running synchronizations on the primary and secondary side.

  2. Download the synced issue data for this synchronization (open the synchronization config and click ••• > Download synchronized issues) on both the primary and secondary side.

Step-2: Modify exported data

  1. Open the two files (primary and secondary) with the synced issue data created in step 1.2

  2. Copy all data from the secondary file below "firstConnector" as "secondConnector" to the secondary file and save it as a .json file

    Master file example
    {
      "firstConnector": [
        {
          "id": 47,
          "connectorKey": "CON-4-SAM2",
          "localIssueKey": "SAM2-1",
          "remoteIssueKey": "SP2-1",
          "firstSyncDate": 1604663032918,
          "lastOutgoingChange": 1604663098456,
          "lastChangeSeen": 1604654096519,
          "outgoingMessageSequenceId": 2,
          "lastIncomingChange": 1604663109653,
          "incomingMessageSequenceId": 1,
          "comments": [
            {
              "localId": "10019"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
    }
    


    Slave file example
    {
      "firstConnector": [
        {
          "id": 63,
          "connectorKey": "CON-5-SP2",
          "localIssueKey": "SP2-1",
          "remoteIssueKey": "SAM2-1",
          "firstSyncDate": 1604663073350,
          "lastOutgoingChange": 1604663107283,
          "lastChangeSeen": 1604663103895,
          "outgoingMessageSequenceId": 1,
          "lastIncomingChange": 1604663103990,
          "incomingMessageSequenceId": 2,
          "attachments": [
            {
              "remoteId": "10002",
              "localId": "10004"
            }
          ],
          "comments": [
            {
              "remoteId": "10019",
              "localId": "10034"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
    }
    


    Merged file example
    {
      "firstConnector": [
        {
          "id": 47,
          "connectorKey": "CON-4-SAM2",
          "localIssueKey": "SAM2-1",
          "remoteIssueKey": "SP2-1",
          "firstSyncDate": 1604663032918,
          "lastOutgoingChange": 1604663098456,
          "lastChangeSeen": 1604654096519,
          "outgoingMessageSequenceId": 2,
          "lastIncomingChange": 1604663109653,
          "incomingMessageSequenceId": 1,
          "comments": [
            {
              "localId": "10019"
            }
          ],
          "incomingChangesIgnored": false
        }
      ]
       "secondConnector": [
        {
          "id": 63,
          "connectorKey": "CON-5-SP2",
          "localIssueKey": "SP2-1",
          "remoteIssueKey": "SAM2-1",
          "firstSyncDate": 1604663073350,
          "lastOutgoingChange": 1604663107283,
          "lastChangeSeen": 1604663103895,
          "outgoingMessageSequenceId": 1,
          "lastIncomingChange": 1604663103990,
          "incomingMessageSequenceId": 2,
          "attachments": [
            {
              "remoteId": "10002",
              "localId": "10004"
            }
          ],
          "comments": [
            {
              "remoteId": "10019",
              "localId": "10034"
            }
          ],
          "incomingChangesIgnored": false
        }
      ],
    }
    


Step-3: Create a new synchronization

  1. Go to the project on the primary side and start a new sync with the secondary project (on cloud)

  2. Upload the synced issue data for this issues in this project that you exported and changed in step 2.2 (click ••• > Pair existing issues > Pair existing issues with Backbone before)

  3. Configure the same issue types, fields, comments and attachments.

    1. Note: if you are using a  user field mapping, make sure to set it to "User Passthrough Mapping (by email)"

Step-4: Start the synchronization

  1. Start the new synchronization

  2. In the new synchronization,  trigger a resync in both directions (with only the summary field, so the resync doesn't take long). This is done in order to recreate the information in the  Sync panel.

The resync might still take some time to run through all work items so you won’t see immediate results on all work items. If you want to check how many work items have been updated you can use the backbone attributes in the following JQL filter:

project = PROJECT_NAME and backbone.remoteKey is not empty

  1. Once you have verified everything is working correctly, delete the original synchronization. This will also delete the old information in the sync info panel.

Still Unclear? Reach Out to Us

If you need help with any of these migration steps, reach out to us via  help@k15t.com.