Benutzer mit den meisten Antworten
Zuweisung Firma zu Kontakt (Feld ParentcustomerId) mit MS CRM 4.0 Standard-Import / Fehler 0x80040373 Der Datensatz ist leer

Frage
-
Hallo zusammen,
ich hänge bei einem Import und freue mich über neue Ansätze :-)
Hat jemand noch einen Tipp, wie man mit den Standardmitteln die Zuordnung zu einer Firma hinbekommt ?
##########
Situation
##########
Ich importiere in MS CRM 4.0 (Rollup 3) ca. 500 Firmen und 270 Personen mit den MS CRM Standardfunktionen
Da ich über Fernwartung arbeite, wollte ich für die Handvoll Daten auf eine Installation des Data Migration Manager verzichten und mit dem Standardimport arbeiten.
Import von Firmen hat ohne Probleme geklappt. Nach dem ersten Import in den Firmenstamm habe ich über Excel die Firmen-GUID exportiert und die restlichen Daten zu den Firmen mit dem automatischen Mapping updaten lassen. Dabei war die erste Spalte immer die GUID. Das gleiche Vorgehen habe ich auch für die Kontaktpersonen (Contact) gemacht.
Als letzten Schritt wollte ich die Kontakte auch den Firmen zuordnen. Dazu habe ich die in Beispiel1 erstellte Textdatei mit 2 Spalten (Contact-GUID und Account-GUID) erstellt und Trennzeichen Tabulator genutzt
Es wird beim Import eine automatische Zuordnung erkannt. Aber der Import schlägt fehlt (auch bei Varianten mit anderen Trennzeichen oder beim Beispiel2 mit den Firmenname). Die Fehlermeldung lautet 0x80040373 (Der Datensatz ist leer / The record is empty)
----------------------
Beispiel1 mit Tab-Trennzeichen
----------------------
Kontakt Firma
C7FEB3AC-BC47-DE11-BF1B-000C29E6C3D5 A5D231FC-DA46-DE11-BF1B-000C29E6C3D5
----------------------
Beispiel2 mit Tab-Trennzeichen
----------------------
Kontakt Firma
C7FEB3AC-BC47-DE11-BF1B-000C29E6C3D5 Druckerei Hokuspokus
In Newsgroups gab es auch noch den Hinweis, dass die ParentcustomerId ein Sonderfall ist. Es kann sich ja aus Systemsicht um einen Account oder einen Contact handeln. Die Versuche mit diesen Vorschlägen wie z.B. "account,{A5D231FC-DA46-DE11-BF1B-000C29E6C3D5}" führten aber dazu, dass das automatische Mapping nicht mehr funktionierte.
Dubios erscheint mir aber das Beispiel 3:
Es wird eine automatische Zuordnung erkannt. Der Import meldet Erfolg, aber denoch wird bei Datensatz kein Bezug zur Firma eingetragen. Die Anrede wurde aber eingetragen. (Ich habe den gleichen Effekt auch noch mit Vorname und Nachname (statt Anrede) erreichen können)
----------------------
Beispiel3 mit TabTrennung
----------------------
Kontakt Firma Anrede
C7FEB3AC-BC47-DE11-BF1B-000C29E6C3D5 A5D231FC-DA46-DE11-BF1B-000C29E6C3D5 Herr
Freue mich über Rückmeldungen
Danke im Voraus
Markus Müller
Herzliche Grüße Markus Müller
Antworten
-
Hallo Markus,
wenn ich Firmen und Kontakte mit Bezug zueinander importieren will, importiere ich die Daten immer in die Entität Lead und stufe diese anschließend zu einer Firma und einen Kontakt hoch. So umgehe ich die von dir beschriebenen Probleme.
Du musst nur vor dem Import darauf achten, das alle benötigten Felder gefüllt sind und du auch alle Felder an Firma und Kontakt übergibst.
Wenn dies nicht möglich ist, weil z.B. bereits ein Teil der Daten im System ist, gehe ich immer direkt auf die Datenbank und stelle den Bezug über einen SQL-Befehl her. Das ist zwar unsupportet, geht aber viel schneller, wenn man sich mit SQL auskennt. Únten findest du ein Beispiel, wie so ein SQL-Befehl aussehen kann (vorher unbedingt eine Datensicherung durchführen!)
Anbei eine einfache Möglichkeit, Firmen und Kontakte nachträglich im CRM zu verbinden.
Dazu jeweils bei der Firma und beim Kontakt ein Feld anlegen, in dem die Zuordnung der Kontakte zu Firmen hinterlegt ist. Ist der Inhalt der beiden Felder gleich, werden die Kontakte den Firmen zugeordnet.
Zuerst die beiden neuen Felder über das CRM in der Datenbank anlegen:
Feld in der Firma = IDImportFirma
Feld im Kontakt = IDImportFirma
Anschließend folgenden Befehl im SQL-Server eingegeben und ausführen, um die Verknüpfung zu erstellen:
HINWEIS: Eventuell muss der Präfix, hier new_, der verknüpften Felder angepasst werden.
DECLARE @IDImportFirma nvarchar(50)
DECLARE @contactID nvarchar(50)
DECLARE CursorContact CURSOR FOR
SELECT new_IDImportFirma, contactID FROM Contact WHERE new_IDImportFirma IS NOT NULL AND new_IDImportFirma <> ''
OPEN CursorContact
FETCH NEXT FROM CursorContact INTO @IDImportFirma, @contactID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Contact SET AccountID =
(SELECT AccountID FROM Account WHERE new_IDImportFirma = @IDImportFirma)
WHERE new_IDImportFirma = @IDImportFirma
FETCH NEXT FROM CursorContact INTO @IDImportFirma, @contactID
END
CLOSE CursorContact
DEALLOCATE CursorContact
Viele Grüße
Michael Sulz
axcentro GmbH- Als Antwort vorgeschlagen Michael Sulz Montag, 25. Mai 2009 05:44
- Als Antwort markiert Dr. Krieger und Kollegen Markus Müller Montag, 25. Mai 2009 15:50
-
Hallo allerseits,
da ich keinen besonderen Grund für einen Cursor sehe, hier auch ein kleiner Einzeiler:
UPDATE Contact
SET AccountId = Account.AccountId
FROM Contact INNER JOIN Account ON Contact.new_IDImportFirma = Account.new_IDImportFirma
Viele Grüße,
Jürgen
Jürgen Beck
Dipl. Kfm./Wirtschaftsinformatik
MVP, MCSD.NET, MCITP DBA, MCDBA, MCSE
Microsoft Certified Business Management Solutions Professional
Microsoft Certified CRM Developer
Microsoft Certified Trainer
ComBeck IT Services & Business Solutions
Microsoft Gold Certified Partner
Microsoft Small Business Specialist
Developing & Supporting Business Applications from small business to big enterprises covering scores of sectors
http://www.combeck.de
- Als Antwort markiert JuergenBeckModerator Freitag, 29. Mai 2009 11:13
Alle Antworten
-
Hallo Markus,
wenn ich Firmen und Kontakte mit Bezug zueinander importieren will, importiere ich die Daten immer in die Entität Lead und stufe diese anschließend zu einer Firma und einen Kontakt hoch. So umgehe ich die von dir beschriebenen Probleme.
Du musst nur vor dem Import darauf achten, das alle benötigten Felder gefüllt sind und du auch alle Felder an Firma und Kontakt übergibst.
Wenn dies nicht möglich ist, weil z.B. bereits ein Teil der Daten im System ist, gehe ich immer direkt auf die Datenbank und stelle den Bezug über einen SQL-Befehl her. Das ist zwar unsupportet, geht aber viel schneller, wenn man sich mit SQL auskennt. Únten findest du ein Beispiel, wie so ein SQL-Befehl aussehen kann (vorher unbedingt eine Datensicherung durchführen!)
Anbei eine einfache Möglichkeit, Firmen und Kontakte nachträglich im CRM zu verbinden.
Dazu jeweils bei der Firma und beim Kontakt ein Feld anlegen, in dem die Zuordnung der Kontakte zu Firmen hinterlegt ist. Ist der Inhalt der beiden Felder gleich, werden die Kontakte den Firmen zugeordnet.
Zuerst die beiden neuen Felder über das CRM in der Datenbank anlegen:
Feld in der Firma = IDImportFirma
Feld im Kontakt = IDImportFirma
Anschließend folgenden Befehl im SQL-Server eingegeben und ausführen, um die Verknüpfung zu erstellen:
HINWEIS: Eventuell muss der Präfix, hier new_, der verknüpften Felder angepasst werden.
DECLARE @IDImportFirma nvarchar(50)
DECLARE @contactID nvarchar(50)
DECLARE CursorContact CURSOR FOR
SELECT new_IDImportFirma, contactID FROM Contact WHERE new_IDImportFirma IS NOT NULL AND new_IDImportFirma <> ''
OPEN CursorContact
FETCH NEXT FROM CursorContact INTO @IDImportFirma, @contactID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Contact SET AccountID =
(SELECT AccountID FROM Account WHERE new_IDImportFirma = @IDImportFirma)
WHERE new_IDImportFirma = @IDImportFirma
FETCH NEXT FROM CursorContact INTO @IDImportFirma, @contactID
END
CLOSE CursorContact
DEALLOCATE CursorContact
Viele Grüße
Michael Sulz
axcentro GmbH- Als Antwort vorgeschlagen Michael Sulz Montag, 25. Mai 2009 05:44
- Als Antwort markiert Dr. Krieger und Kollegen Markus Müller Montag, 25. Mai 2009 15:50
-
Hallo Markus,
du kannst natürlich auch die Hilfsmittel aus diesem Thread verwenden
http://social.msdn.microsoft.com/Forums/de-DE/crmgerman/thread/fa2c5994-7554-42c9-9135-dc1e089fe13d
Viele Grüße
Michael Sulz
axcentro GmbH -
Hallo Michael,
danke für den Tipp. Das Update über SQL hat nun funktioniert. Es ist aber insgesamt merkwürdig -bei einer Testinstallation hat auch das von MS vorgesehene Konzept geklappt. Aber halt nicht auf dem Kundensystem.
Gruß aus dem Rheinland
Markus Müller
Herzliche Grüße Markus Müller -
Hallo allerseits,
da ich keinen besonderen Grund für einen Cursor sehe, hier auch ein kleiner Einzeiler:
UPDATE Contact
SET AccountId = Account.AccountId
FROM Contact INNER JOIN Account ON Contact.new_IDImportFirma = Account.new_IDImportFirma
Viele Grüße,
Jürgen
Jürgen Beck
Dipl. Kfm./Wirtschaftsinformatik
MVP, MCSD.NET, MCITP DBA, MCDBA, MCSE
Microsoft Certified Business Management Solutions Professional
Microsoft Certified CRM Developer
Microsoft Certified Trainer
ComBeck IT Services & Business Solutions
Microsoft Gold Certified Partner
Microsoft Small Business Specialist
Developing & Supporting Business Applications from small business to big enterprises covering scores of sectors
http://www.combeck.de
- Als Antwort markiert JuergenBeckModerator Freitag, 29. Mai 2009 11:13