This article guides you through the steps to take for the migration of a behind firewall (email/file exchange) synchronization to a Server 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 Server to Cloud scenario. You have to use a direct synchronization to the Cloud instance from the other Server instance.
  • The Server scenario has to configure the synchronization
  • If you are syncing comments and want to sync them in the new migrated use case as well, some will be duplicated. We are working on a fix for this:  BAC-1449 - Getting issue details... STATUS

Migration Steps

Master migrates to cloud

Step-1: Export your synchronization data

  1. Stop the original running synchronizations on the master and slave side.
  2. Download the synced issue data for this synchronization (open the synchronization config and click ••• > Download synchronized issues) on both the master and slave side.

Step-2: Modify exported data

  1. Open the two files (master and slave) with the synced issue data created in step 1.2
  2. Copy all data from the master file below "firstConnector" as "secondConnector" to the slave 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
        }
      ]
    }
    CODE
     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
        }
      ]
    }
    CODE
     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
        }
      ]
    }
    CODE

Step-3: Create a new synchronization

  1. Go to the project on the slave side and start a new sync with the master 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 info panel.
  3. Once you have verified everything is working correctly, delete the original synchronization. This will also delete the old information in the sync info panel.

Slave migrates to cloud

Step-1: Export your synchronization data

  1. Stop the original running synchronizations on the master and slave side.
  2. Download the synced issue data for this synchronization (open the synchronization config and click ••• > Download synchronized issues) on both the master and slave side.

Step-2: Modify exported data

  1. Open the two files (master and slave) with the synced issue data created in step 1.2
  2. Copy all data from the slave file below "firstConnector" as "secondConnector" to the slave 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
        }
      ]
    }
    CODE
     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
        }
      ]
    }
    CODE
     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
        }
      ],
    }
    CODE

Step-3: Create a new synchronization

  1. Go to the project on the master side and start a new sync with the slave 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 info panel.
  3. 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.