diff --git a/lib/import/otrs.rb b/lib/import/otrs.rb index faf93660e..3ecffea51 100644 --- a/lib/import/otrs.rb +++ b/lib/import/otrs.rb @@ -542,7 +542,6 @@ module Import::OTRS next if !record.key?(key.to_s) ticket_new[value] = record[key.to_s] } - ticket_old = Ticket.where( id: ticket_new[:id] ).first # find owner if ticket_new[:owner] @@ -568,15 +567,22 @@ module Import::OTRS ticket_new[:customer_id] = 1 end - # set state types + # update or create ticket + ticket_old = Ticket.find(ticket_new[:id]) if ticket_old log "update Ticket.find(#{ticket_new[:id]})" ticket_old.update_attributes(ticket_new) else log "add Ticket.find(#{ticket_new[:id]})" - ticket = Ticket.new(ticket_new) - ticket.id = ticket_new[:id] - ticket.save + + begin + ticket = Ticket.new(ticket_new) + ticket.id = ticket_new[:id] + ticket.save + rescue ActiveRecord::RecordNotUnique + log "Ticket #{ticket_new[:id]} is handled by another thead, skipping." + next + end end # utf8 encode