none
Aktivitäten für mehrere Kontakte auf einmal erstellen RRS feed

  • Frage

  • Wir haben folgende Herausforderung:

    Eine Entität Veranstaltung

    eine Entität Teilnahme

    Nun sollen zu einer Veranstaltung in einem Rutsch mehrere hundert Kontakte eingeladen werden. Teilnahme ist eine Aktivitätsentität. Wir hatten erst gedacht, das über einen Dialog zu machen, also alle Kontakte auswählen, und in dem Dialog die entsprechende Veranstaltung abfragen. Leider kann ich einen Dialog nicht gleichzeitig auf mehrere Datensätze anwenden.

    Wer hat denn schon einmal etwas ähnliches gemacht und hat eine Idee?

     

    Liebe Grüße,

    Reinhold

    Donnerstag, 1. September 2011 12:25

Antworten

  • Hallo Reinhold,

    das geht über das Kampagnenmanagement. Dort kannst du Aktivitäten für Mitglieder einer Marketingliste erstellen. Das geht unter dem Menüpunkt Kampagnenaktivitäten in der Kampagne.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Montag, 31. August 2015 10:53
    Donnerstag, 1. September 2011 14:47
  • Hallo Reinhold,

    eine andere Idee. Warum erstellst du nicht einfach einen manuellen Workflow. Der Workflow kann auch benutzerdefinierte Aktivitäten erstellen. Dann musst du nur noch die Kontakte markieren und dann den Workflow ausführen.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Montag, 31. August 2015 10:53
    Montag, 5. September 2011 12:20
  • So, gelöst.

    Ein Blick in die Datenbank hat geholfen. Bei einer dynamischen Liste, ist ListMember leer. Dafür gibt es das FetchXml in der Spalte list.Query.

    Also muß man bei einer dynamischen Liste per FetchXml die ListMember holen, und bei einer statischen Liste per ListMemberSet.

     

    Reinhold

    • Als Antwort markiert RBecker Donnerstag, 8. September 2011 13:21
    Donnerstag, 8. September 2011 13:21

Alle Antworten

  • Hallo Reinhold,

    das geht über das Kampagnenmanagement. Dort kannst du Aktivitäten für Mitglieder einer Marketingliste erstellen. Das geht unter dem Menüpunkt Kampagnenaktivitäten in der Kampagne.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Montag, 31. August 2015 10:53
    Donnerstag, 1. September 2011 14:47
  • Hallo Michael,

    Jaein

    das Kampagnenmanagement kenn ich wohl. Es liefert nur nicht die Funktionalitäten, die wir brauchen. So kann ich mit ja keine eigene Entität als Kampagnenaktivität definieren. Und die vorhandenen sind für unsere Zwecke nicht brauchbar.

    Wir haben im Moment einen Workaround, in dem wir selektierte Kontakte nach Excel exportieren, dort die Spalte Veranstaltung hinzufügen, und das dann als Teilnahme-Datensätze importieren.

    Liebe Grüße,
    Reinhold

    Donnerstag, 1. September 2011 15:08
  • Hallo Reinhold,

    Nochmal zur Sicherheit, dass ich das Problem korrekt wiedergebe: Bei einer Veranstaltung sollen für alle Teilnehmer (Kontakte) eine Aktivtät "Teilnahme" erstellt werden, wenn diese sicher teilnehmen werden.

    Ich würde das Problem so lösen, dass ich zuerst alle Kontakte, die eine Einladung erhalten haben mit der Veranstaltung verknüpfen würde. Nun habe ich, wie in einer Kampagne, eine Liste mit Kontakten in der Veranstaltung. Dann würde ich einen ISV-Button "Teilnahme verteilen" erstellen, der auf der Liste von Kontakten angezeigt wird. Zur Verteilung der Aktivitäten würde ich dann in der Liste von Kontakten, die eine Einladung erhalten haben, die jenigen markieren, die auch wirklich teilnehmen und dann mit dem neuen Button die Aktivitäten erstellen. Zum Erstellen der Aktivitäten hätte ich zwei Vorschläge: einerseits könntest du ein eigenes Webservice schreiben, dass die Aktivitäten für die markierten Kontakte erstellt oder andererseits könntest du auf den markierten Kontakten ein Flag setzen, dass in der Folge ein Plugin auslöst, dass die Aktivitäten erstellt. Beim ISV-Button "Teilnahme verteilen" müsstest du auf alle Fälle ein kurzes Script einfügen, dass du die GUIDs der markierten Kontakte übergeben bekommst.

    Liebe Grüße,

    Andreas


    Andreas Buchinger
    Microsoft Dynamics Certified Technology Specialist
    MCPD: SharePoint Developer 2010
    Montag, 5. September 2011 12:04
  • Hallo Reinhold,

    eine andere Idee. Warum erstellst du nicht einfach einen manuellen Workflow. Der Workflow kann auch benutzerdefinierte Aktivitäten erstellen. Dann musst du nur noch die Kontakte markieren und dann den Workflow ausführen.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Montag, 31. August 2015 10:53
    Montag, 5. September 2011 12:20
  • Hallo Andreas, hallo Michael,

    vielen Dank für eure Vorschläge. Das Problem ist, daß wir hier von jeweils um die 6000 Personen sprechen, die zu Veranstaltungen eingeladen werden.

    Der manuelle Workflow geht deshalb nicht, da ich dort den Namen der Veranstaltung nicht angeben kann. Der Dialog geht deshalb nicht, da ich dort immer nur einen Datensatz markieren kann.

    Meine Idee ist nun, einen Dialog auf die Entität Marketingliste zu erstellen. Dort kann ich die Veranstaltung auswählen, zu der die Mitglieder der Marketingliste eingeladen werden sollen. Anschließend ruft ein programmierter Workflow alle Mitglieder der Marketingliste auf und erstellt jeweils eine Entität Einladung.

     

    Liebe Grüße,

    Reinhold

    Dienstag, 6. September 2011 06:49
  • Hallo Reinhold,

    So ähnlich habe ich auch meinen Vorschlag gemeint: Mit dem ISV-Button genügt ein Klick und die Übergabe aller markierten Kontakte (GUID) und du kannst im Webservice bzw. über den kleinen Umweg im Plugin die Datensätze für Teilnahme erstellen.

    Liebe Grüße,

    Andreas


    Andreas Buchinger
    Microsoft Dynamics Certified Technology Specialist
    MCPD: SharePoint Developer 2010
    Dienstag, 6. September 2011 06:59
  • Hallo Reinhold,

    vielleicht hilft Dir das hier weiter.

    http://crm2011distributewf.codeplex.com/

    damit solltest Du ohne selbst was programmieren zu müssen einen Workflow für jeden Kontakt auf der Marketingliste starten können.

    Die Doku ist hier zu finden http://crm2011distributewf.codeplex.com/releases/71027/download/265643

    Den Rest der Lösung hast Du ja schon.

     

    Grüße

    Thomas

    Dienstag, 6. September 2011 08:22
  • Hallo Leute,

    danke für die rege Diskussion. Eigentlich gefällt mir mein ansatz ganz gut. Ich habe nur Probleme, die ListMeber zu selektieren:

     var liste = service.ListSet.Where(l => l.ListName == "Liste").FirstOrDefault();
                var listMember = from l in service.ListSet
                                 where l.ListId.Value.Equals(liste.Id)
                                 select new { l.ListId,l.ListName, l.MemberType, l.MemberCount };
    
                var lMember = listMember.FirstOrDefault();
    
                #region Switch member type
                switch (lMember.MemberType.Value)
                {
                    case 1:
                        break;
                    case 2:
                        var contacts = from c in service.ContactSet
                                       join lm in service.ListMemberSet
                                       on c.ContactId.Value equals lm.EntityId.Id
                                       join l in service.ListSet
                                       on lm.ListId.Id equals l.ListId.Value
                                       where l.ListId.Value.Equals(lMember.ListId.Value)
                                       select c;
                        var cons = contacts.ToList();
                        break;
                    case 4:
                        break;
                    default:
                        break;
                }
                #endregion
    

    Liefert für Typ 2 = Kontakt immer 0 zurück. Es handelt sich um eine dynamische Liste. Also  l.MemberCount íst schon leer.

    Erkennt jemand den Fehler?

     

    Danke,

    Reinhold

    Mittwoch, 7. September 2011 10:21
  • So, gelöst.

    Ein Blick in die Datenbank hat geholfen. Bei einer dynamischen Liste, ist ListMember leer. Dafür gibt es das FetchXml in der Spalte list.Query.

    Also muß man bei einer dynamischen Liste per FetchXml die ListMember holen, und bei einer statischen Liste per ListMemberSet.

     

    Reinhold

    • Als Antwort markiert RBecker Donnerstag, 8. September 2011 13:21
    Donnerstag, 8. September 2011 13:21