none
Zuweisung Firma zu Kontakt (Feld ParentcustomerId) mit MS CRM 4.0 Standard-Import / Fehler 0x80040373 Der Datensatz ist leer RRS feed

  • 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
    Sonntag, 24. Mai 2009 13:39

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
    Montag, 25. Mai 2009 05:44
  • 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
    Freitag, 29. Mai 2009 11:13
    Moderator

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
    Montag, 25. Mai 2009 05:44
  • 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
    Montag, 25. Mai 2009 05:49
  • 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
    Montag, 25. Mai 2009 15:53
  • 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
    Freitag, 29. Mai 2009 11:13
    Moderator