Microsoft Dynamics Marketing - Analytic Workbooks: 16.2.62.0
Microsoft Dynamics Marketing - CRM Connector: 16.2.62.0
Microsoft Dynamics Marketing - Language Packs: 16.2.62.0
Rechercher dans ce blog
jeudi 11 septembre 2014
dimanche 7 septembre 2014
SDK 6.1.1 est disponible
Microsoft Dynamics CRM Software Development Kit (SDK) for CRM Online and CRM 2013 (on-premises)
* Mise à jour du programme CrmSvcUtil.exe pour se connecter à Microsoft Dynamics CRM Online en utilisant le fournisseur d'identité Office 365.
* Le maximum du nombre de boutons dans un formulaire passe de 5 à 7.
* Il n'est plus possible de créer un espace de noms Access Control Service (ACS) en utilisant le portail de gestion Microsoft Azure.
* Ajout des informations sur les 2 paramètres du nouveau contrôle Timer.
* Dans l'entité Incident, L'attribut PrimaryContactId doit être utilisé à la place de l'attribut ResponsibleContactId pour associer un incident à un enregistrement Contact.
* Modification de la description du type par défaut des calendriers
* Les formulaires optimisés pour la lecture seront supprimés dans la version supportée.
* Ajout d'un exemple d'utilisation de la méthode addCustomFilter.
* Mise à jour du programme CrmSvcUtil.exe pour se connecter à Microsoft Dynamics CRM Online en utilisant le fournisseur d'identité Office 365.
* Le maximum du nombre de boutons dans un formulaire passe de 5 à 7.
* Il n'est plus possible de créer un espace de noms Access Control Service (ACS) en utilisant le portail de gestion Microsoft Azure.
* Ajout des informations sur les 2 paramètres du nouveau contrôle Timer.
* Dans l'entité Incident, L'attribut PrimaryContactId doit être utilisé à la place de l'attribut ResponsibleContactId pour associer un incident à un enregistrement Contact.
* Modification de la description du type par défaut des calendriers
* Les formulaires optimisés pour la lecture seront supprimés dans la version supportée.
* Ajout d'un exemple d'utilisation de la méthode addCustomFilter.
Numérotation automatique par workflow : Différents paramétrages possibles
Suite de l'article : Numérotation automatique par workflow : Activité de workflow personnalisée
Rappel :
Dans l'article précédent, nous avons créé une activité de workflow personnalisée pour générer une numérotation automatique. Dans cette article, nous allons décrire les différents paramétrages possibles de numérotation.
1/ Préfixe-000001-Suffixe
Paramétrage :
Résultat :
2/ 000001-Suffixe
Paramétrage :
Résultat :
3/ Préfixe-000001
Paramétrage :
Résultat :
4/ 000001
Paramétrage :
Résultat :
5/ Modification de la taille du numéro incrémental
Paramétrage :
Résultat :
Paramétrage :
Résultat :
Rappel :
Dans l'article précédent, nous avons créé une activité de workflow personnalisée pour générer une numérotation automatique. Dans cette article, nous allons décrire les différents paramétrages possibles de numérotation.
1/ Préfixe-000001-Suffixe
Paramétrage :
2/ 000001-Suffixe
Paramétrage :
Résultat :
3/ Préfixe-000001
Paramétrage :
Résultat :
4/ 000001
Paramétrage :
5/ Modification de la taille du numéro incrémental
Paramétrage :
Résultat :
Paramétrage :
Résultat :
Numérotation automatique par workflow : Activité de workflow personnalisée
Suite de l'article : Numérotation automatique par workflow temps réel vs Plugin
Rappel de l'article précédent :
La numérotation automatique par workflow est facilement paramétrable mais son impact sur la création d'enregistrement est plus important qu'un plugin (120 % en plus).
Dans cet article, nous allons créer une activité de workflow personnalisée pour réduire le temps de traitement du workflow tout en gardant la flexibilité de paramétrage du workflow.
1/ Créer une entité Counter avec les attributs :
2/ Créer l'activité de Workflow personnalisé.
En paramètre d'entrée, l'enregistrement Counter correspondant à la numérotation d'une entité.
En paramètre de sortie, la numérotation générée.
3/Importer cette assembly dans la solution.
4/Création du workflow.
Tableau de comparaison pour un chargement de 100 enregistrements par la méthode CreateRequete.
L'utilisation d'une activité de workflow personnalisé permet de réduire le temps d'exécution de 30 %. De plus, le paramétrage du compteur est plus souple et permet d'ajouter une numérotation automatique sur n'importe quelle entité. Le prochain article décrira les différentes possibilités de numérotation.
Rappel de l'article précédent :
La numérotation automatique par workflow est facilement paramétrable mais son impact sur la création d'enregistrement est plus important qu'un plugin (120 % en plus).
Dans cet article, nous allons créer une activité de workflow personnalisée pour réduire le temps de traitement du workflow tout en gardant la flexibilité de paramétrage du workflow.
1/ Créer une entité Counter avec les attributs :
- Name : Chaîne de caractères
- Prefix : Chaîne de caractères
- Number : Décimal
- Number Length : Décimal
- Suffix : Chaîne de caractères
2/ Créer l'activité de Workflow personnalisé.
En paramètre d'entrée, l'enregistrement Counter correspondant à la numérotation d'une entité.
En paramètre de sortie, la numérotation générée.
namespace AutoNumberingWorkflowActivity { using System; using System.Activities; using System.ServiceModel; using System.Text; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; using Microsoft.Xrm.Sdk.Workflow; public sealed class AutoNumbering : CodeActivity { ////// Executes the workflow activity. /// /// The execution context. protected override void Execute(CodeActivityContext executionContext) { // Create the tracing service ITracingService tracingService = executionContext.GetExtension(); if (tracingService == null) { throw new InvalidPluginExecutionException("Failed to retrieve tracing service."); } tracingService.Trace("Entered Class1.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}", executionContext.ActivityInstanceId, executionContext.WorkflowInstanceId); // Create the context IWorkflowContext context = executionContext.GetExtension (); if (context == null) { throw new InvalidPluginExecutionException("Failed to retrieve workflow context."); } tracingService.Trace("Class1.Execute(), Correlation Id: {0}, Initiating User: {1}", context.CorrelationId, context.InitiatingUserId); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension (); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { //Create a request RetrieveRequest _retrieveRequest = new RetrieveRequest(); _retrieveRequest.ColumnSet = new ColumnSet(new string[] { "new_prefix", "new_number","new_numberlength","new_suffix" }); _retrieveRequest.Target = Counter.Get(executionContext); //Execute the request RetrieveResponse _retrieveResponse = (RetrieveResponse)service.Execute(_retrieveRequest); //Retrieve the Counter Entity Entity _counterRecord = _retrieveResponse.Entity as Entity; StringBuilder _sbuilder = new StringBuilder(); if (_counterRecord.Contains("new_prefix")) { _sbuilder.Append((String)_counterRecord["new_prefix"]); _sbuilder.Append("-"); } if (_counterRecord.Contains("new_numberlength")) { _sbuilder.AppendFormat(String.Concat("{0:D", (int)(Decimal)_counterRecord["new_numberlength"], "}"), (int)(Decimal)_counterRecord["new_number"]); } else { _sbuilder.AppendFormat("{F0}",(Decimal)_counterRecord["new_number"]); } if (_counterRecord.Contains("new_suffix")) { _sbuilder.Append("-"); _sbuilder.Append((String)_counterRecord["new_suffix"]); } //Set the variable Number.Set(executionContext, _sbuilder.ToString()); //Increment decimal _value = (Decimal)_counterRecord["new_number"]; Entity _updateCounter = new Entity("new_counter"); _updateCounter.Id = _counterRecord.Id; _updateCounter["new_number"] = _value + 1; service.Update(_updateCounter); } catch (FaultException e) { tracingService.Trace("Exception: {0}", e.ToString()); // Handle the exception. throw; } tracingService.Trace("Exiting Class1.Execute(), Correlation Id: {0}", context.CorrelationId); } [RequiredArgument] [Input("Select Counter Record")] [ReferenceTarget("new_counter")] public InArgument Counter { get; set; } [Output("Number")] public OutArgument Number { get; set; } } }
3/Importer cette assembly dans la solution.
4/Création du workflow.
La première étape permet de renseigner l'enregistrement pour la numérotation.
La seconde étape modifie l'attribut sur l'enregistrement cible avec le champ retourné par l'activité de workflow.
Après activation du workflow, voici les tests.
Tableau de comparaison pour un chargement de 100 enregistrements par la méthode CreateRequete.
Type de compteur | Durée en ms | Remarque |
Workflow temps réel | 7583 | Impossible de définir la longueur du nombre incrémental |
Plugin | 3450 | Trop spécifique à l'entité cible |
Activité de workflow | 5060 | Paramétrable à souhait |
L'utilisation d'une activité de workflow personnalisé permet de réduire le temps d'exécution de 30 %. De plus, le paramétrage du compteur est plus souple et permet d'ajouter une numérotation automatique sur n'importe quelle entité. Le prochain article décrira les différentes possibilités de numérotation.
samedi 6 septembre 2014
Numérotation automatique par workflow temps réel vs Plugin
Je me suis inspiré de l'article : Auto-Numbering with CRM Workflows: Real-Time vs. Asynchronous.
1/ Création d'une entité Compteur. On ajoute les attributs :
2/ Création d'une relation 1:N entre l'entité où l'on souhaite la numérotation (dans cet exemple, elle se nomme Maison) et l'entité compteur.
3/ Création du Workflow temps réel
La première étape permet de lier l'enregistrement à l'enregistrement Compteur.
La seconde étape renseigne le numéro.
La dernière étape incrémente la valeur au niveau du compteur.
4/ Activer le workflow et regardons les résultats après des essais d'import de fichier.
Comparons maintenant les performances d'intégration de données entre la numérotation automatique par workflow temps réel et par plugin avec un chargement de 100 enregistrements importés en utilisant la fonction CreateRequest.
Pour réaliser un compteur générique qui possèdent à la fois un impact minimum sur le chargement de données et tout en ayant un paramétrage aisé, il faut donc utiliser une activité de workflow personnalisée appelée depuis un workflow temps réel. Ce sera le sujet du prochain article.
1/ Création d'une entité Compteur. On ajoute les attributs :
- Entité : Chaîne de caractères
- Préfixe : Chaîne de caractères
- Numéro : Décimal
- Suffixe : Chaîne de caractères
2/ Création d'une relation 1:N entre l'entité où l'on souhaite la numérotation (dans cet exemple, elle se nomme Maison) et l'entité compteur.
3/ Création du Workflow temps réel
La première étape permet de lier l'enregistrement à l'enregistrement Compteur.
La seconde étape renseigne le numéro.
La dernière étape incrémente la valeur au niveau du compteur.
4/ Activer le workflow et regardons les résultats après des essais d'import de fichier.
Comparons maintenant les performances d'intégration de données entre la numérotation automatique par workflow temps réel et par plugin avec un chargement de 100 enregistrements importés en utilisant la fonction CreateRequest.
Type de compteur | Durée en ms | Remarque |
Workflow temps réel | 7583 | Impossible de définir la longueur du nombre incrémental |
Plugin | 3450 | Trop spécifique à l'entité cible |
Pour réaliser un compteur générique qui possèdent à la fois un impact minimum sur le chargement de données et tout en ayant un paramétrage aisé, il faut donc utiliser une activité de workflow personnalisée appelée depuis un workflow temps réel. Ce sera le sujet du prochain article.
vendredi 5 septembre 2014
Dynamics CRM Online 2015 : la feuille de route révélée
JDN du 05/09/2014
Microsoft vient de dévoiler la feuille de route de Dynamics CRM pour les 12 mois à venir. Au quatrième trimestre 2014, l'éditeur prévoit de sortir une nouvelle version de son outil de gestion de la relation client (nom de code : Vega). Elle devrait être lancée à la fois en version SaaS et pour les serveurs internes d'entreprise (version on-premise). Vega étendra notamment la compatibilité de la solution à de nouveaux types de terminaux mobiles. Elle devrait aussi améliorer la prise en charge des scénarios de vente : la gestion des relations entre produits, des bundle de produits, ou encore des suggestions par exemple.
Autre évolution saillante, Microsoft annonce vouloir booster les fonctions de gestion de la relation étendue (ou eXtended Relationship Management), qui visent à couvrir la relation avec tous les interlocuteurs de l'entreprise (clients, mais également partenaires, actionnaires, contacts tiers, fournisseurs...). L'analytics est également au menu, via une meilleure intégration de l'outil de reporting Power BI, et la prise en charge du reporting transactionnel pour les apps Windows Mobile. Enfin, on relève l'extension des possibilités d'API client.
Quant à la version suivante de Dynamics CRM, sa sortie est annoncée pour le deuxième trimestre 2015. Ses améliorations se limiteront aux briques de la suite disponibles uniquement en mode cloud : Microsoft Social Listening (reporting social), Dynamics Marketing (gestion de campagnes marketing multicanales) et Parature (la technologie de help desk acquise par Microsoft en janvier dernier).
D'ici la fin de l'année, une nouvelle version de l'outil de CRM sera dévoilée. Au programme : extension de l'API et ouverture sur de nouveaux terminaux. La mise à jour 2015 est aussi dévoilée.
Autre évolution saillante, Microsoft annonce vouloir booster les fonctions de gestion de la relation étendue (ou eXtended Relationship Management), qui visent à couvrir la relation avec tous les interlocuteurs de l'entreprise (clients, mais également partenaires, actionnaires, contacts tiers, fournisseurs...). L'analytics est également au menu, via une meilleure intégration de l'outil de reporting Power BI, et la prise en charge du reporting transactionnel pour les apps Windows Mobile. Enfin, on relève l'extension des possibilités d'API client.
Quant à la version suivante de Dynamics CRM, sa sortie est annoncée pour le deuxième trimestre 2015. Ses améliorations se limiteront aux briques de la suite disponibles uniquement en mode cloud : Microsoft Social Listening (reporting social), Dynamics Marketing (gestion de campagnes marketing multicanales) et Parature (la technologie de help desk acquise par Microsoft en janvier dernier).
jeudi 28 août 2014
Sessions Microsoft le 1 Octobre aux Salons Solutions
10h00 - 11h30 Grandir avec le Cloud : L'ERP Microsoft vu par ses clients
11h30 - 12h30 Cloud, Mobilité, Verticalisation : analyse en profondeur des nouveautés de Microsoft Dynamics NAV
14h00 - 15h00 Témoignage d'un client Dynamics CRM
15h00 - 16h00 CRM, Mobilité, Réseaux Sociaux, découvrez en live toutes les capacités de Microsoft Dynamics CRM pour vos force de vente !
16h00 - 17h00 Club utilisateurs des solutions Dynamics
11h30 - 12h30 Cloud, Mobilité, Verticalisation : analyse en profondeur des nouveautés de Microsoft Dynamics NAV
14h00 - 15h00 Témoignage d'un client Dynamics CRM
15h00 - 16h00 CRM, Mobilité, Réseaux Sociaux, découvrez en live toutes les capacités de Microsoft Dynamics CRM pour vos force de vente !
16h00 - 17h00 Club utilisateurs des solutions Dynamics
dimanche 24 août 2014
Gartner : Magic Quadrant for Sales Force Automation du 15 Juillet 2014
Magic Quadrant for Sales Force Automation
Microsoft (Dynamics CRM Online)
Microsoft a mis plus de moyen sur la version Cloud, avec de nouvelles fonctionnalités apparaissant avant la version On-premise. Microsoft Dynamics CRM Online intègre plusieurs services Microsoft Azure, mais elle est construite sur une plate-forme spécifique, appelée XRM. Microsoft Dynamics CRM Online n'est plus seulement pour les petites ou moyennes entreprise. Au cours des 12 derniers mois, Microsoft a gagné d'importants clients (de plus de 700 utilisateurs).
Microsoft (Dynamics CRM)
En plus de Microsoft Dynamics CRM Online, il est également proposé un modèle On-premise. Les deux produits sont les mêmes, et le passage à la version Online dépend plus de la volonté du client de migrer vers le Cloud.
Les entreprises considèrent Microsoft CRM On-premise principalement pour :
* Le coût total de possession (TCO) plus attrayant que la version Online,
* L'intégration avec Microsoft Outlook et la capacité d'utiliser les technologies Microsoft tels que SharePoint et SQL Server,
* La confidentialité des données et les problèmes d'intégration en temps réel.
Microsoft (Dynamics CRM Online)
Microsoft a mis plus de moyen sur la version Cloud, avec de nouvelles fonctionnalités apparaissant avant la version On-premise. Microsoft Dynamics CRM Online intègre plusieurs services Microsoft Azure, mais elle est construite sur une plate-forme spécifique, appelée XRM. Microsoft Dynamics CRM Online n'est plus seulement pour les petites ou moyennes entreprise. Au cours des 12 derniers mois, Microsoft a gagné d'importants clients (de plus de 700 utilisateurs).
Microsoft (Dynamics CRM)
En plus de Microsoft Dynamics CRM Online, il est également proposé un modèle On-premise. Les deux produits sont les mêmes, et le passage à la version Online dépend plus de la volonté du client de migrer vers le Cloud.
Les entreprises considèrent Microsoft CRM On-premise principalement pour :
* Le coût total de possession (TCO) plus attrayant que la version Online,
* L'intégration avec Microsoft Outlook et la capacité d'utiliser les technologies Microsoft tels que SharePoint et SQL Server,
* La confidentialité des données et les problèmes d'intégration en temps réel.
mercredi 20 août 2014
[Livre] CRM 2013 QuickStart
CRM 2013 QuickStart
Auteurs : David Yack, Joel Lindstrom, David Berry, Richard Knudson, Dylan Haskins et Jukka Niiranen
dimanche 17 août 2014
OptionSets CRM 2013 pour PowerShell
Le Microsoft Dynamics CRM 2013 SDK contient la définition des OptionSets pour C# et VB.NET dans les dossiers respectifs:
* SDK\SampleCode\CS\HelperCode
* SDK\SampleCode\VB\HelperCode
Voici la définition des OptionSets pour PowerShell : http://1drv.ms/1t7F60P
Pour l'exemple lors de l'import de fichier, la valeur pour DoubleQuote s'obtient en écrivant :
Ce qui donne :
Pour plus d'information sur l'utilisation des OptionSets, vous pouvez consulter l'article d'Aymeric Mouillé : CRM data Management With PowerShell.
* SDK\SampleCode\CS\HelperCode
* SDK\SampleCode\VB\HelperCode
Voici la définition des OptionSets pour PowerShell : http://1drv.ms/1t7F60P
Pour l'exemple lors de l'import de fichier, la valeur pour DoubleQuote s'obtient en écrivant :
[ImportFileDataDelimiterCode]::DoubleQuote -as [int]
Ce qui donne :
$DoubleQuoteValue = ImportFileDataDelimiterCode]::DoubleQuote -as [int]; $DoubleQuote = New-Object -TypeName "Microsoft.Xrm.Sdk.OptionSetValue" -ArgumentList $DoubleQuoteValue; $ImportFile = New-Object -TypeName Microsoft.Xrm.Sdk.Entity -ArgumentList "importfile"; $ImportFile["datadelimitercode"] = [Microsoft.Xrm.Sdk.OptionSetValue] $DoubleQuote;
Pour plus d'information sur l'utilisation des OptionSets, vous pouvez consulter l'article d'Aymeric Mouillé : CRM data Management With PowerShell.
Inscription à :
Articles (Atom)