EmailToCase von Jürgen Beck

Die angehangene Anleitung zeigt, wie man ein webbasierendes Visual Studio 2005-Projekt erstellt, um aus einer vorhandenen E-Mail eine neue Anfrage zu erstellen, welche als Bezug zu dieser E-Mail erstellt wird.



AW: EmailToCase von Jürgen Beck

Super Tutorial um in Crm Coding einzusteigen.
Ich hab noch ein paar Änderungen vorgenommen, die ich auch mal posten möchte:

In der EmailToCase.aspx.cs:

string url2;
protected string GetUrl2()
    {
        return url2;
    }

Nach "incidentid = service.Create(crmIncident);" folgendes Einfügen:

string incidentidtext = "{" + incidentid.ToString() + "}";
Response.Write("IncidentID: " + incidentidtext + "<BR>");
url2 = "http://nw-crm/cs/cases/edit.aspx?id=" + incidentidtext;

So und nun noch in der EmailToCase.aspx folgendes ändern:

if (1 == <%= GetStatusOk() %>) {
            var width = screen.width*0.8; 
            var height = screen.height*0.6;
            var left = (screen.width/2) - width/2;
            var top = (screen.height/2) - height/2;
            var cfg = ",width=" + width + ",height=" + height + ",left=" + left + ",top=" + top + ",status=yes,titlebar=no,toolbar=no,menubar=no";
            window.open('<%= GetUrl2() %>',null,cfg);
            opener.close();
            self.close();
        }


Und was macht das ganze?
Es wird einfach die neu erstellte Anfrage geöffnet und die geöffnete Email geschlossen.

So vielleicht hilft das noch dem einen oder anderen.

Wenn ich noch das Recht bekommen würde, Dateien hochzuladen, dann kommt noch mein komplettes File in dem ich auch noch implementiert habe, dass die EMail aus der bzw. den Warteschlangen entfernt bzw "detached" wird.

Adee, toffi


Re: AW: EmailToCase von Jürgen Beck

Die Berechtigungen zum Upload sollten nun funktionieren. Jetzt kann jeder registrierte Benutzer Dateien hochladen.


AW: Re: AW: EmailToCase von Jürgen Beck

Hallo.

Anhänge hinzufügen geht noch nicht.

Adee, Toffi




AW: EmailToCase von Jürgen Beck

Sehe grade, dass ich offensichtlich der einzige bin, der bisher hier eine Bewertung abgegeben hat ;-)


Aber ich finde das Beispiel auch sehr gut gelungen und sehr gut erklärt.


An mich wurde schon vor etwas längerer Zeit der Wunsch herangetragen, für unser internes CRM eine solche Lösung zu implementieren. Werde das Beispiel gleich in meiner Testumgebung umsetzen und anschließend auch ins Produktivsystem überführen.


Vielleicht fallen mir ja auch noch ein paar Erweiterungen ein. Schön wäre es ja, wenn nach einem Klick das Feld deaktiviert würde. Dafür bräuchte man ja im Grunde nur die E-Mail-Aktivität um ein Feld vom Typ boolean ergänzen und dementsprechend das Feld auf der Maske de- bzw aktivieren.


Vielen Dank an Jürgen für das Beispiel.


MfG


Stefan Dirks



AW: EmailToCase von Jürgen Beck

Ich hatte probiert mit EmailtoCase funktionalität ín unsere CRM system.Das funktioniert nicht. Ich habe keine ahnung über warum die folgende fehlermeldung kommt? Können Sie bitte hilfe mir. Ich brauche Ihre hilfe dringend.



Server Error in '/EmailToCase' Application.



Server was unable to process request.


Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.Services.Protocols.SoapException: Server was unable to process request.

Source Error:





Line 260:        [return: System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.microsoft.com/crm/2006/WebServices")]

Line 261: public BusinessEntity Retrieve([System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.microsoft.com/crm/2006/WebServices")] string entityName, [System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.microsoft.com/crm/2006/WebServices")] System.Guid id, [System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.microsoft.com/crm/2006/WebServices")] ColumnSetBase columnSet) {
Line 262: object[] results = this.Invoke("Retrieve", new object[] {
Line 263: entityName,
Line 264: id,

Source File: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\emailtocase\1ab63e76\dcd1fb25\App_WebReferences.nfmjedan.0.cs    Line: 262

Stack Trace:





[SoapException: Server was unable to process request.]

System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +533462
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204
CrmSdk.CrmService.Retrieve(String entityName, Guid id, ColumnSetBase columnSet) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\emailtocase\1ab63e76\dcd1fb25\App_WebReferences.nfmjedan.0.cs:262
_EmailToCase.GetStatus() in c:\Inetpub\wwwroot\ASPNET20\EmailToCase\EmailToCase.aspx.cs:38
ASP.emailtocase_aspx.__Renderform2(HtmlTextWriter __w, Control parameterContainer) in c:\Inetpub\wwwroot\ASPNET20\EmailToCase\EmailToCase.aspx:17
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +2068267
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24
System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +59
System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +68
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +37
ASP.emailtocase_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\emailtocase\1ab63e76\dcd1fb25\App_Web_dx0ca7d7.0.cs:0
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +2068267
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24
System.Web.UI.Page.Render(HtmlTextWriter writer) +26
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1896





Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.210


 



AW: EmailToCase von Jürgen Beck

Hallo,


ich habe das gleiche Problem wie GeethaD. Gibt es hierzeu eine Lösung?


Besten Dank und Viele Grüße


Christian



AW: EmailToCase von Jürgen Beck

Hallo Zusammen,


ok hab den Fehler gefunden. Dieser tritt auf wenn das ASPNET20 auf Anonymen Zugriff eingestellt ist und der Benutzer sich nicht am Server Authentifiziert. Daher das was in der Doku auch zu lesen ist mit der Verzechnissicherheit, beachten.... ;-)


Gruß


Christian



Re: AW: EmailToCase von Jürgen Beck

Ich habe das Beispiel übrigens nochmal aktualisiert auf Englisch über das Microsoft Dynamics CRM Team Blog veröffentlicht:


http://blogs.msdn.com/crm/archive/2006/11/29/e-mail-to-case-for-free.aspx



AW: Re: AW: EmailToCase von J&#252;rgen Beck

Hi,


nachdem jetzt schon ein paar Leute nach meiner kleinen Anpassung gefragt hatten und das Anhängen von Files jetzt auch geht, hab ich mein File angehängt.


Das Skript wurde von mir so erweitert, dass die Emails nachdem sie in einen Case geändert wurden, auch aus der Warteschlange entfernt werden.

Adee, Toffi



AW: EmailToCase von Jürgen Beck

Gute Idee!


AW: EmailToCase von Jürgen Beck

Hallo ersteinmal,


und ein herzliches Danke für die gute Einführung und Realisierung. Dies hilft sicherlich sehr dabei, seinen Support mit dem MS CRM 3.0 abzuwickeln.


Nun zu meiner Frage, wie würde man dies bei MS CRM 4.0 realisieren? Mit dem neuen Möglichkeiten - E-Mail to Case bereits im Standard müßte ich dass doch eigentlich durch einen Workflow automatisieren lassen können.


Aktuell habe ich noch einen Benutzer support eingerichtet und als Microsoft CRM User Rechte gegeben. (Könnte man sicher auch über eine Warteschlange machen, allerdings ist diese E-Mailadresse bei uns eine Exchange Verteilergruppe und kein richtiger Empfänger, weswegen ich diesen Weg wählte).


Ich möchte eigentlich nur auf jede neue E-Mail Anfrage an support reagieren um dann automatisiert die Funktion E-Mail to Case auszuführen. Aktuell ist mir allerdings nicht bekannt wie ich auf neue E-Mails reagiere.


Ich probier es momentan, indem ich mit meiner Workflowregel überprüfe --> immer wenn eine neue E-Mail an support @firma.de geht dann aktiviere den Workflow.


Problem 1, als Bedingung überprüfe ich im Workflow momentan Wenn neue E-Mail aktivität mit den An Empfänger = support @firma.de. Darauf reagiert mein Workflow aber offensichtlich nicht. Sind dies keine neuen Datensätze, da Sie durch den E-Mail-Router mit dem Exchange verknüpft sind? Beziehungsweise, wie sollte ich die Abfrage richtiger weise nennen.


2. Ich finde im Workflowmanager aktuell nicht die Möglichkeit aus der E-Mail eine Anfrage zu machen. Ich könnte mit dem Workflowmanager den Status der E-mail auf geschlossen setzen und dann eine neue Anfrage mit den Daten erstellen, aber ich hoffe es lässt sich auch kürzer realisieren.


Für Ripps und Tricks zu E-Mail to Case mit MS CRM 4.0 wäre ich Euch sehr dankbar.


Gruß,
Kim Sancken



AW: EmailToCase von Jürgen Beck

Hallo Kim,


Kaya Yanar würde sagen: Guckst Du... hier http://blogs.msdn.com/crm/archive/2008/02/19/e-mail-to-case-lead-using-crm-4-workflow.aspx


Dort findest Du mehr Inspiration und Antworten auf Deine Fragen.


Gruß



AW: EmailToCase von Jürgen Beck

Hallo Carsten,


der Link ist gut.


Denoch funktioniert mein Workflow, obwohl Identisch, immer noch nicht.


Ich könnte schwören, dass ich mit meinen Lösungsansatz exakt den selben Weg gegangen bin, nur mit dem Unterschied, dass es bei mir nicht funktioniert.


Bei mir reagiert der Workflow, beziehungsweise die Warteschlange einfach nicht automatisiert auf den erhalt einer neuen E-Mail. Obwohl eine E-Mail Aktivität unmittelbar erstellt wird, sobald ich eine E-Mail an meine Adresse [email protected] Firma.de gesendet wird.


Mir ist aufgefallen das in der E-Mail der Absender nicht eundeutig erkannt und zugeordnet wird, startet deswegen der Workflow nicht. In meinem Fall ist der Name Rot und ich kann die Firma oder den Kontakt auswählen um festzulegen, welcher Benutzer gemeint ist. Denoch startet mein Workflow nicht automatisch.


Ich bin mir nicht sicher, ob ich den Text immer korrekt aus den Englischen ins deutsche übersetzt habe. Im Text steht aber auch nur drinnen, dass es dann ja auch immer funktionieren könnte. Nur wie.


Kann mir jemand sagen wie ich automatisch einen Workflow nach dem Erhalt einer E-mail starte?


Ich wäre über die Lösung meines Problems sehr dankbar.


P.S. Carsten Deine Informationen zum Lizenz-Upgradepfad von 3.0 zu 4.0 haben mir sehr geholfen, vielen Dank nochmal.


Gruß,
Kim



AW: EmailToCase von Jürgen Beck

Hallo Kim,


nun zunächst könntest Du prüfen, ob es am Absender liegt, in dem Du z.B. eine private E-Mail-Adresse kurz an einen Kontakt hinzufügst und dann eine E-Mail sendest.


So wäre zumindest dieser Punkt überprüft. Ich mache das eigentlich auch immer mit einem persönlichen E-Mail-Konto.


Hast Du "To" oder "ToRecipients" verwendet. Meist ist hier der Dreher.


Wenn Du dann "OnDemand" bei der Ausführung des Workflows einstellst, kannst Du diesen auch noch mal manuell anstoßen und prüfen, ob er funktioniert oder sich an einem Punkt "aufhängt".


Sonst müsste man sich das wirklich mal live anschauen - so aus der Ferne...ist halt schwierig


Gruß