none
Fehler beim Speichern einer Emailentity über eine CRM Activity RRS feed

  • Frage

  • Hallo,

    über eine Custom Workflow Activity erstelle ich eine Email und speichere sie über den ICRMService ab.

    Wenn ich einen Workflow mit dieser Activity starte, schlägt dieser fehl. Im Logfile findet sich dann immer diese Meldung :

    Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung 'queue_entries'. Der Konflikt trat in der 'XXXX_MSCRM'-Datenbank, Tabelle 'dbo.QueueBase', column 'QueueId' auf.

    Ich arbeite nicht auf Datenbankebene, weshalb mich dieser Fehler mehr, als verwirrt. Mittlerweile vermuten wir irgendeinen Konfigurationsfehler, wissen aber nicht, wo wir ansetzen sollen.

    Kennt jemand diesen oder ähnliche Fehler ? Hat jemand vielleicht eine Idee, wie man da weiter verfahren kann ?

    Vielen Dank,

    Marc Brewer

     

    Kleiner Nachtrag. Der Code sieht so aus :

        
                email email = new email();
                // Set email properties
                email.to = new activityparty[] { party };
                email.from = new activityparty[] { party };
                email.subject = subject;
                email.description = body;

                CrmBoolean direction = new CrmBoolean();
                direction.Value = true;
                email.directioncode = direction;
                email.ownerid.Value = systemUser.systemuserid.Value;
                email.scheduledend = CrmDateTime.Now;
               

                TargetCreateEmail targetCreate = new TargetCreateEmail();
                targetCreate.Email = email;

                CreateRequest request = new CreateRequest();
                request.Target = targetCreate;

                try
                {
                    CreateResponse response = (CreateResponse)crmService.Execute(request);
                }
                catch (Exception e)
                {
                    WriteToLog("Fehler : " + e.Message);
                    WriteToLog(e.Source);
                    WriteToLog(e.StackTrace);
                }

    Dienstag, 11. Mai 2010 07:20

Antworten

  • Hallo Marc,

     

    hast du mal geprüft mit welchem Account diese Activity ausgeführt wird?

    Ich denke das hier wird dir helfen:

    http://msdn.microsoft.com/en-us/library/cc151091.aspx

     

    Dir wird beim Erstellen des ICrmSerivce die Impersonierung fehlen ( die Workflowactivity wird mit dem SYSTEM-Konto ausgeführt,

    welches evtl. nicht die nötigen Rechte hat )

     

    Gruß

    Andreas

    Dienstag, 11. Mai 2010 07:48
  • Hallo Marc,

    nimm mal bitte diese Zeile weg und schau mal, ob dann der Fehler immer noch kommt:

    "email.ownerid.Value = systemUser.systemuserid.Value;"

    Außerdem kannst du anstatt:

                CrmBoolean direction = new CrmBoolean();
                direction.Value = true;
                email.directioncode = direction;

    auch dieses hier schreiben:

                email.directioncode = new CrmBoolean(true);

    Ist irgendwie kürzer...

    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
    Dienstag, 11. Mai 2010 09:13
    Moderator

Alle Antworten

  • Hallo Marc,

     

    hast du mal geprüft mit welchem Account diese Activity ausgeführt wird?

    Ich denke das hier wird dir helfen:

    http://msdn.microsoft.com/en-us/library/cc151091.aspx

     

    Dir wird beim Erstellen des ICrmSerivce die Impersonierung fehlen ( die Workflowactivity wird mit dem SYSTEM-Konto ausgeführt,

    welches evtl. nicht die nötigen Rechte hat )

     

    Gruß

    Andreas

    Dienstag, 11. Mai 2010 07:48
  • Hallo Marc,

    nimm mal bitte diese Zeile weg und schau mal, ob dann der Fehler immer noch kommt:

    "email.ownerid.Value = systemUser.systemuserid.Value;"

    Außerdem kannst du anstatt:

                CrmBoolean direction = new CrmBoolean();
                direction.Value = true;
                email.directioncode = direction;

    auch dieses hier schreiben:

                email.directioncode = new CrmBoolean(true);

    Ist irgendwie kürzer...

    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
    Dienstag, 11. Mai 2010 09:13
    Moderator