[solved] Import von Config Items erstellt Doubletten!

Hilfe zu OTRS Problemen aller Art
Post Reply
meilon
Znuny newbie
Posts: 52
Joined: 28 Apr 2010, 15:16
Znuny Version: 5.0.18
Location: Leinfelden-Echterdingen

[solved] Import von Config Items erstellt Doubletten!

Post by meilon »

Hallo!

Ich habe für den Export folgende Felder ausgewählt: Number,Name,Deployment State,Incident State,Vendor,Model,Description,Type,Owner,SerialNumber,OperatingSystem,CPU::1,RAM::1,RAM::2,HardDisk::1,HardDisk::1::Capacity,HardDisk::2,HardDisk::2::Capacity,NIC::1,NIC::1::IPoverDHCP,NIC::1::IPADDRESS::1,GraphicAdapter

Im ersten Durchlauf habe ich die Datei über ein Programm mit neuen Daten generieren lassen (mein selbstgeschriebenes Sync-Programm) und wieder importieren lassen. Und Obwohl die Nummer vorhanden war, wurden mir Dubletten erzeugt! Hinterher habe ich dann für die Felder Number und Name den Haken bei Identifikator gesetzt und auch hiernach wurden beim erneuten Import der Daten Dubletten erstellt.

Meine Import-Datei verwendet keine Anführungszeichen, ITSM kann aber die Daten aber alle erfolgreich lesen und ordnet sie den richtigen Feldern zu. Wieso also werden doppelte CIs zugelassen und nicht die vorhandenen aktualisiert?

Grüße
meilon
Last edited by meilon on 21 May 2010, 19:19, edited 1 time in total.
OTRS 5.0.18 :: ITSM auf Apache 2.4.18 (Ubuntu), Perl 5.22.1 mit Ubuntu Server 16.04.2
Agent Auth über ActiveDirectory, Customer Auth mit Kerberos SingleSignOn über ActiveDirectory
meilon
Znuny newbie
Posts: 52
Joined: 28 Apr 2010, 15:16
Znuny Version: 5.0.18
Location: Leinfelden-Echterdingen

Re: Import von Config Items erstellt Doubletten!

Post by meilon »

Hab die Antwort selber gefunden!

Mein Programm ist in C# im .NET 3.5 geschrieben. Um die neue Import CSV zu erstellen verwende ich die StreamWriter Klasse. Und da ich sicher gehen wollte habe ich als Encoding UTF-8 angegeben. Leider schickt .NET bei Verwendung von diesem Encoding drei Bytes vorraus (ef bb bf) bevor die eigentlichen Daten geschrieben werden. Diese Bytes dienen dazu, dass Programme erkennen können das jetzt UTF-8 kommt. Das von ITSM genutzte Perl-Modul Text::CSV kann damit aber überhaupt nichts anfangen und nimmt die Drei Bytes als Zeichen auf. Da mein Identifikator auf "Number" gesetzt ist, dies zugleich mein erstes Feld ist, vergleicht er beim ersten Datensatz also immer die Nummer in der CMDB mit der selben Nummer aus dem Import, aber mit den vorangestellten drei Bytes. Da die natürlich nicht gleich sind, erstellt ITSM ein neues CI. Mit Encoding.Default wird diese "Präambel" nicht geschrieben und der Import funktioniert. Noch funktionieren keine Umlaute (weil die Datei ja jetzt kein UTF-8 mehr ist), aber da finde ich auch noch einen Weg. Laut diversen Quellen muss man dafür eine eigene Subklasse für's UTF-8 schreiben, das ist aber nichts für das Forum hier.

Drauf gekommen bin ich, weil ich die generierte Import-Datei in Notepad++ neu abgespeichert hatte und dann mit hexdump verglichen habe. Dann noch etwas Google und die Sache war klar!

Problem gelöst, trotzdem danke an alle, die sich das Topic wenigstens angesehen haben.

Grüße
meilon
OTRS 5.0.18 :: ITSM auf Apache 2.4.18 (Ubuntu), Perl 5.22.1 mit Ubuntu Server 16.04.2
Agent Auth über ActiveDirectory, Customer Auth mit Kerberos SingleSignOn über ActiveDirectory
Post Reply