Email-Text oder Link per Workflow in Task einfügen

23. September 2011 17:36

Hallo,
da ich neu bin: erst mal viele Grüße an alle!

Ich würde gerne etwas umsetzen bei dem ich nicht weiterkomme.
(Bitte entschuldigt die englischen Begriffe, da unser CRM in Englisch ist.)

Das Szenario:
Eintreffende E-Mails werden in einer Queue gespeichert. Wenn nun einem Queue Item ein Nutzer zugewiesen wird, so soll mittels Workflow ein Task für denjenigen erstellt werden, damit er weiß, dass eine Mail zum abarbeiten vorliegt.
Nun hätte ich gerne, dass der Text (die Beschreibung) in der Task entweder die komplette Email-Nachricht oder zumindest die URL der Email enthält. Damit möchte ich erreichten, dass wenn die Tasks mit Outlook synchronisiert werden, direkt ersichtlich ist was der Inhalt der ursprünglichen Nachricht ist.

Wenn ich aber die Description der Email, die den Email-Text enthält, als dynamic value in eine neue Task einbinde, so wird der komplette HTML-Code der Mail angezeigt, inklusive aller Tags. Ich denke das liegt daran, dass Outlook die Tasks nicht in HTML, sondern in RTF speichert. Bisher habe ich allerdings nicht herausgefunden, ob man die Art der Formatierung irgendwo beeinflussen kann.

Eine Alternative wäre, wie schon erwähnt, einen Link auf die E-Mail in die Task-Beschreibung einzubauen. Dann könnte man aus Outlook heraus mit einen Klick zu gewünschten Mail kommen.
Mein Versuch dies umzusetzen ist bisher aber auch gescheitert. Ich habe ein neues Feld in der Email-Entität angelegt, das die URL der Email speichert.
Dazu verwende ich JavaScript beim Laden des Emailformulars. Soweit funktioniert das Verfahren, die URL wird korrekt gespeichert und ich kann sie auch im Formular anzeigen lassen.
Wenn ich aber dieses neue URL-Feld als dynamic value verwende, wird nur leerer Text in die Task eingefügt. Mir ist aufgefallen, dass es nur nicht funktioniert, wenn die E-Mail bereits geschlossen ist, d.h. der Status z.b. „received“ ist.
Wenn ich eine neue E-Mail erstelle, diese in eine Queue packe und dann einem Nutzer zuweise, so wird in der generierten Task der Link korrekt dargestellt.
Das Problem ist, dass alle E-Mail die über den E-Mail Router eintreffen den Status closed/received haben.

Gibt es im CRM deshalb eine Beschränkung für Entitäten die nicht mehr offen/aktiv sind?

Hat schon jemand Erfahrungen in dieser Richtung gesammelt?
Vielen Dank im Vorraus!

Gruß,
MC

Re: Email-Text oder Link per Workflow in Task einfügen

15. Dezember 2011 16:05

Hi,

du kannst einen Hyperlink mit Hilfe von CRM 2011 Workflow Utiliies generieren: http://crm2011workflowutils.codeplex.com/

Mit diesem JavaScript kannst du die html tags aus deinem kopierten E-Mailtext entfernen (beim OnLoad aufrufen)
Hier wird z.B. der E-Mailtext beim Generieren von Anfragen in die Anfrage übernommen und beim Öffnen der Anfrage bereinigt

Code:
function ClearEmailText()
{
      //--Prüfen ob die Combobox ausgwählt ist und es sich somit um einen bestehenden Datensatz handelt
      if(Xrm.Page.getAttribute("caseorigincode").getSelectedOption() != null)
      {
            //--Den Text der ausgewählten Position aus der Combo "Anfrageursprung auslesen"
            var _caseOriginCode = Xrm.Page.getAttribute("caseorigincode").getSelectedOption().text;
           
            //--Die Formatierung nur bei Anfragen, die aus einer E-Mail erstellt wurden, vornehmen
            if (_caseOriginCode  == "E-Mail")
            {
                  //--Prüfen ob das Feld mit dem E-Mailtext gefüllt wurde
                  if( Xrm.Page.getAttribute("new_supportmessage").getValue() != null)
                  {
                        var description = Xrm.Page.getAttribute("new_supportmessage");   
                        var htmldesc = Xrm.Page.getAttribute("new_supportmessage").getValue().toLowerCase();   
   
                        //--prüfen ob der Text htmlTags enthällt
                        if (htmldesc.indexOf("</body>") != -1)
                        {
                              //--Create a factitious DOM element   
                              var stubDescription = document.createElement( "<SPAN style='width:1px;height:1px'>");   
                              //---Assign the HTML to the factitious DOM element   
                              stubDescription.innerHTML = description.getValue();   
                              //---Add it to the html document   
                              document.body.appendChild( stubDescription );   
                              //---Assign the stripped body back to the description field   
                              description.setValue(stubDescription.innerText);   
                              //---remove the factitious DOM element   
                              document.body.removeChild( stubDescription );
                        }
                  }
            }
      }
}