-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Maintenance: Swap Migrator image for freshdeksk migrator * Introduce Zendesk Migrator * Maintenance: Reduce complexity for identical content * Maintenance: Remove incorrect Zendesk limitation statement * Maintenance: Move all Migrator includes into own directory
- Loading branch information
1 parent
720ed15
commit f384f0e
Showing
10 changed files
with
284 additions
and
28 deletions.
There are no files selected for viewing
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
After the import has finished, run the following commands | ||
.. code-block:: ruby | ||
:force: | ||
$ Setting.set('import_mode', false) | ||
$ Setting.set('system_init_done', true) | ||
$ Cache.clear |
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,272 @@ | ||
from Zendesk | ||
************ | ||
From Zendesk | ||
************** | ||
|
||
.. note:: **🙀 Incomplete documentation** | ||
Limitations | ||
=========== | ||
|
||
Sorry, but this documentation part is missing. | ||
We will add this part later, but can't tell when yet. | ||
Please note below Zendesk specific limitations. | ||
These are additional limitations to the | ||
:ref:`general ones listed <migration_limitations>`. | ||
|
||
Please feel welcome to provide a pull request if you find spare time! | ||
* | Differential migrations are **not** supported! | ||
| The general suggestion is to run a test import before to learn | ||
how long the migration is going to take. | ||
* **Important:** Please note that migration speed highly depends on your | ||
Zendesk plan (API rate limits apply). | ||
* User passwords are not migrated and will require the user to use the | ||
`password reset link`_ on the login page. | ||
|
||
.. _password reset link: | ||
https://admin-docs.zammad.org/en/latest/settings/security/base.html#lost-password | ||
|
||
.. note:: | ||
|
||
Your Zendesk plan has to provide API support. | ||
This may not apply to all available plans. | ||
|
||
Prerequisites | ||
============= | ||
|
||
Zammad requires API access which is why you'll need to `create an API key`_ | ||
for the migration. The migrator will request your Zendesk-URL, email address and | ||
API key. | ||
|
||
.. warning:: **🥸 To be or not to be** | ||
|
||
Ensure to retrieve the API key with a **full administrator** account. | ||
Less privileged users will end in a broken migration. | ||
|
||
.. _create an API key: | ||
https://support.zendesk.com/hc/en-us/articles/4408889192858-Generating-a-new-API-token | ||
|
||
Importing Zendesk data | ||
======================== | ||
|
||
Generally you have two options on how to migrate data. | ||
If you have a fairly big instance with a lot of data, you may want to | ||
consider using the console over the browser version. | ||
|
||
.. tabs:: | ||
|
||
.. tab:: Via browser | ||
|
||
After installing Zammad and configuring your | ||
:doc:`webserver </getting-started/configure-webserver>`, navigate to your | ||
Zammads FQDN in your browser and follow the migration wizard. | ||
|
||
Depending on the number of users, tickets and Zendesk plan this may take | ||
some while. | ||
|
||
.. figure:: /images/migration/zendesk/import-via-ui.gif | ||
:alt: Migration process of Zendesk via UI | ||
|
||
.. note:: **😖 Scheduler got interrupted** | ||
|
||
.. figure:: /images/migration/zendesk/scheduler-interrupted.png | ||
|
||
If this message appears after providing your credentials, please be | ||
patient. The migration should start within 5 minutes. | ||
|
||
If you receive above message after the migration begun, please | ||
consider using the console approach instead and reset the | ||
installation. | ||
|
||
.. tab:: Via console | ||
|
||
.. include:: /migration/includes/rails-console-migrator-hint.include.rst | ||
|
||
To prepare the migration, run the following commands | ||
.. code-block:: ruby | ||
:force: | ||
# Set variables for easier settings | ||
$ subdomain = '{zendesk url}' | ||
$ email = '{zendesk admin email address}' | ||
$ token = '{zendesk token}' | ||
# Update Zammad settings for Zendesk import | ||
$ Setting.set('import_zendesk_endpoint', "https://#{subdomain}/api/v2") | ||
$ Setting.set('import_zendesk_endpoint_username', email) | ||
$ Setting.set('import_zendesk_endpoint_key', token) | ||
$ Setting.set('import_backend', 'zendesk') | ||
$ Setting.set('import_mode', true) | ||
.. hint:: | ||
|
||
Want to know if your configuration works before hand? | ||
Run the following command: | ||
|
||
.. code-block:: ruby | ||
Sequencer.process('Import::Zendesk::ConnectionTest') | ||
To start the actual migration, run the following commands | ||
|
||
.. code-block:: ruby | ||
:force: | ||
# That the actual job | ||
$ job = ImportJob.create(name: 'Import::Zendesk') | ||
$ AsyncImportJob.perform_later(job) | ||
.. tip:: | ||
|
||
**🤓 Want to check the state of the migration?** | ||
|
||
Running the following command in a rails console will provide | ||
detailed state information of your migration. | ||
|
||
.. code-block:: ruby | ||
pp ImportJob.find_by(name: 'Import::Zendesk') | ||
To give you an idea how the migration job state looks like, you can | ||
use below tabs. As long as ``finished_at`` is ``nil``, the process | ||
is still running. | ||
|
||
.. tabs:: | ||
|
||
.. tab:: Freshly started import | ||
|
||
.. code-block:: ruby | ||
#<ImportJob:0x0000000008274310 | ||
id: 1, | ||
name: "Import::Zendesk", | ||
dry_run: false, | ||
payload: {}, | ||
result: | ||
{"Organizations"=> | ||
{"skipped"=>0, | ||
"created"=>0, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>0, | ||
"total"=>100}}, | ||
started_at: Mon, 03 Jan 2022 18:41:51 UTC +00:00, | ||
finished_at: nil, | ||
created_at: Mon, 03 Jan 2022 18:41:16 UTC +00:00, | ||
updated_at: Mon, 03 Jan 2022 18:43:32 UTC +00:00> | ||
.. tab:: Import half way | ||
|
||
.. code-block:: ruby | ||
#<ImportJob:0x000055ba3d9dbbb8 | ||
id: 1, | ||
name: "Import::Zendesk", | ||
dry_run: false, | ||
payload: {}, | ||
result: | ||
{"Groups"=> | ||
{"skipped"=>0, | ||
"created"=>3, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>3, | ||
"total"=>3}, | ||
"Organizations"=> | ||
{"skipped"=>0, | ||
"created"=>193, | ||
"updated"=>1, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>194, | ||
"total"=>194}, | ||
"Users"=> | ||
{"skipped"=>0, | ||
"created"=>3352, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>3352, | ||
"total"=>3352}, | ||
"Tickets"=> | ||
{"skipped"=>0, | ||
"created"=>987, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>987, | ||
"total"=>1000}}, | ||
started_at: Tue, 04 Jan 2022 11:37:38 UTC +00:00, | ||
finished_at: nil, | ||
created_at: Tue, 04 Jan 2022 11:37:36 UTC +00:00, | ||
updated_at: Tue, 04 Jan 2022 12:12:52 UTC +00:00> | ||
.. tab:: Finished import | ||
|
||
.. code-block:: ruby | ||
#<ImportJob:0x0000561da0def350 | ||
id: 1, | ||
name: "Import::Zendesk", | ||
dry_run: false, | ||
payload: {}, | ||
result: | ||
{"Groups"=> | ||
{"skipped"=>0, | ||
"created"=>3, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>3, | ||
"total"=>3}, | ||
"Organizations"=> | ||
{"skipped"=>0, | ||
"created"=>193, | ||
"updated"=>1, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>194, | ||
"total"=>194}, | ||
"Users"=> | ||
{"skipped"=>0, | ||
"created"=>3352, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>0, | ||
"deactivated"=>0, | ||
"sum"=>3352, | ||
"total"=>3352}, | ||
"Tickets"=> | ||
{"skipped"=>0, | ||
"created"=>4714, | ||
"updated"=>0, | ||
"unchanged"=>0, | ||
"failed"=>1, | ||
"deactivated"=>0, | ||
"sum"=>4715, | ||
"total"=>4715}}, | ||
started_at: Tue, 04 Jan 2022 11:37:38 UTC +00:00, | ||
finished_at: Tue, 04 Jan 2022 14:30:57 UTC +00:00, | ||
created_at: Tue, 04 Jan 2022 11:37:36 UTC +00:00, | ||
updated_at: Tue, 04 Jan 2022 14:30:57 UTC +00:00> | ||
.. include:: /migration/includes/commands-after-migration.include.rst | ||
|
||
After migration | ||
=============== | ||
|
||
As the migration technically skips the getting started wizard, please | ||
note that you want to adjust your `FQDN settings`_ (FQDN & HTTP-Type). | ||
|
||
.. include:: /migration/includes/how-to-login.include.rst | ||
|
||
.. _FQDN settings: | ||
https://admin-docs.zammad.org/en/latest/settings/system/base.html | ||
|
||
After successfully migrating your Zendesk instance, | ||
continue with :doc:`/getting-started/first-steps`. | ||
|
||
.. include:: /migration/includes/restarting-from-scratch.include.rst |