Browse Source

Maintenance: Improved and fixed problems with Freshdesk migration.

Dominik Klein 1 year ago
parent
commit
118c19eb79

+ 1 - 1
lib/import/otrs/state_factory.rb

@@ -87,7 +87,7 @@ module Import
       def update_ticket_state
         agent_new = fetch_ticket_states(%w[merged removed])
         agent_edit = fetch_ticket_states(%w[new merged removed])
-        customer_new = fetch_ticket_states(%w[ew closed])
+        customer_new = fetch_ticket_states(%w[new closed])
         customer_edit = fetch_ticket_states(%w[open closed])
 
         ticket_state_id = ::ObjectManager::Attribute.get(

+ 2 - 2
lib/sequencer/unit/import/freshdesk/conversation/user.rb

@@ -5,10 +5,10 @@ class Sequencer::Unit::Import::Freshdesk::Conversation::User < Sequencer::Unit::
 
   skip_action :skipped, :failed
 
-  uses :dry_run, :import_job, :resource, :field_map, :id_map
+  uses :dry_run, :import_job, :resource, :field_map, :id_map, :skip_initial_contacts
 
   def process
-    return if user_exists? || resource['user_id'].blank?
+    return if !skip_initial_contacts || user_exists? || resource['user_id'].blank?
 
     ::Sequencer.process('Import::Freshdesk::Contact',
                         parameters: {

+ 2 - 0
lib/sequencer/unit/import/freshdesk/mapping/custom_fields.rb

@@ -6,6 +6,8 @@ class Sequencer::Unit::Import::Freshdesk::Mapping::CustomFields < Sequencer::Uni
   uses :resource, :field_map, :model_class
 
   def process
+    return if !resource['custom_fields']
+
     provide_mapped do
       custom_fields
     end

+ 8 - 7
lib/sequencer/unit/import/freshdesk/perform.rb

@@ -5,18 +5,19 @@ class Sequencer::Unit::Import::Freshdesk::Perform < Sequencer::Unit::Base
 
   skip_action :skipped, :failed
 
-  uses :resources, :object, :import_job, :dry_run, :field_map, :id_map, :time_entry_available
+  uses :resources, :object, :import_job, :dry_run, :field_map, :id_map, :time_entry_available, :skip_initial_contacts
 
   def process
     resources.each do |resource|
       ::Sequencer.process("Import::Freshdesk::#{object}",
                           parameters: {
-                            import_job:           import_job,
-                            dry_run:              dry_run,
-                            resource:             resource,
-                            field_map:            field_map,
-                            id_map:               id_map,
-                            time_entry_available: time_entry_available,
+                            import_job:            import_job,
+                            dry_run:               dry_run,
+                            resource:              resource,
+                            field_map:             field_map,
+                            id_map:                id_map,
+                            time_entry_available:  time_entry_available,
+                            skip_initial_contacts: skip_initial_contacts,
                           })
     end
   end

+ 1 - 1
lib/sequencer/unit/import/freshdesk/requester.rb

@@ -8,7 +8,7 @@ module Sequencer::Unit::Import::Freshdesk::Requester
         params:   params,
       )
 
-      return response if response.is_a? Net::HTTPOK
+      return response if response.is_a?(Net::HTTPOK) || response.is_a?(Net::HTTPNotFound)
 
       handle_error response, iteration
     rescue e

+ 10 - 9
lib/sequencer/unit/import/freshdesk/sub_sequence/generic.rb

@@ -2,7 +2,7 @@
 
 class Sequencer::Unit::Import::Freshdesk::SubSequence::Generic < Sequencer::Unit::Base
 
-  uses :dry_run, :import_job, :field_map, :id_map, :time_entry_available
+  uses :dry_run, :import_job, :field_map, :id_map, :time_entry_available, :skip_initial_contacts
 
   attr_accessor :iteration, :result
 
@@ -13,14 +13,15 @@ class Sequencer::Unit::Import::Freshdesk::SubSequence::Generic < Sequencer::Unit
       @iteration = iteration
       @result = ::Sequencer.process(sequence_name,
                                     parameters: {
-                                      request_params:       request_params,
-                                      import_job:           import_job,
-                                      dry_run:              dry_run,
-                                      object:               object,
-                                      field_map:            field_map,
-                                      id_map:               id_map,
-                                      skipped_resource_id:  skipped_resource_id,
-                                      time_entry_available: time_entry_available,
+                                      request_params:        request_params,
+                                      import_job:            import_job,
+                                      dry_run:               dry_run,
+                                      object:                object,
+                                      field_map:             field_map,
+                                      id_map:                id_map,
+                                      skipped_resource_id:   skipped_resource_id,
+                                      skip_initial_contacts: skip_initial_contacts,
+                                      time_entry_available:  time_entry_available,
                                     },
                                     expecting:  self.class.const_get(:EXPECTING))
       break if iteration_should_stop?

+ 2 - 2
lib/sequencer/unit/import/freshdesk/ticket/requester_contact.rb

@@ -5,10 +5,10 @@ class Sequencer::Unit::Import::Freshdesk::Ticket::RequesterContact < Sequencer::
 
   skip_action :skipped, :failed
 
-  uses :dry_run, :import_job, :resource, :field_map, :id_map
+  uses :dry_run, :import_job, :resource, :field_map, :id_map, :skip_initial_contacts
 
   def process
-    return if contact_exists? || resource['requester_id'].blank?
+    return if !skip_initial_contacts || contact_exists? || resource['requester_id'].blank?
 
     ::Sequencer.process('Import::Freshdesk::Contact',
                         parameters: {

+ 1 - 1
lib/sequencer/unit/import/kayako/requester.rb

@@ -16,7 +16,7 @@ module Sequencer::Unit::Import::Kayako::Requester
       end
 
       handle_error response, iteration
-    rescue Net::HTTPClientError, OpenSSL::SSL::SSLError => e
+    rescue e
       handle_exception e, iteration
     end
 

+ 3 - 3
spec/integration/freshdesk_spec.rb

@@ -37,13 +37,13 @@ RSpec.describe 'Freshdesk import', db_strategy: :reset, integration: true, requi
         },
         'Users'         => {
           'skipped'     => 0,
-          'created'     => 19,
+          'created'     => 18,
           'updated'     => 0,
           'unchanged'   => 0,
           'failed'      => 0,
           'deactivated' => 0,
-          'sum'         => 19,
-          'total'       => 19,
+          'sum'         => 18,
+          'total'       => 18,
         },
         'Organizations' => {
           'skipped'     => 0,

+ 9 - 9
spec/integration/kayako_spec.rb

@@ -33,33 +33,33 @@ RSpec.describe 'Kayako import', db_strategy: :reset, integration: true, required
         },
         'Users'         => {
           'skipped'     => 0,
-          'created'     => 7,
+          'created'     => 8,
           'updated'     => 0,
           'unchanged'   => 0,
           'failed'      => 0,
           'deactivated' => 0,
-          'sum'         => 7,
-          'total'       => 7,
+          'sum'         => 8,
+          'total'       => 8,
         },
         'Organizations' => {
           'skipped'     => 0,
-          'created'     => 2,
+          'created'     => 3,
           'updated'     => 1,
           'unchanged'   => 0,
           'failed'      => 0,
           'deactivated' => 0,
-          'sum'         => 3,
-          'total'       => 3,
+          'sum'         => 4,
+          'total'       => 4,
         },
         'Tickets'       => {
           'skipped'     => 0,
-          'created'     => 4,
+          'created'     => 5,
           'updated'     => 1,
           'unchanged'   => 0,
           'failed'      => 0,
           'deactivated' => 0,
-          'sum'         => 5,
-          'total'       => 5,
+          'sum'         => 6,
+          'total'       => 6,
         },
       }
     end

Some files were not shown because too many files changed in this diff