Rechercher dans ce blog

jeudi 9 octobre 2014

Microsoft casse les prix pour séduire les clients de Salesforce

LMI du 09/10/2014

Les entreprises qui cherchent actuellement un CRM pourraient être tentées par la dernière offre de Microsoft.

Microsoft a concocté un bundle de produits CRM Online composé à la fois d'Office 365 et de son outil Power BI. Le prix de lancement du pack Sales Productivity est volontairement très agressif et vise spécifiquement les clients de son rival Salesforce.com puisque Microsoft l'a fixé à 65 dollars HT par utilisateur et par mois. Soit exactement le prix demandé par Salesforce.com pour son édition Professional CRM, à la différence que celle-ci ne comprend ni suite bureautique (Office 365), ni produit de BI autonome (SQL Analysis Services). Les clients actuels d'Office 365 peuvent mettre à jour l'ensemble du bundle Productivity Sales pour 45 dollars HT par utilisateur et par mois. L'offre de Microsoft intervient quelques jours avant la conférence Dreamforce de Salesforce.com qui se tiendra du 13 au 16 octobre à San Francisco, où, selon les rumeurs, le fournisseur devrait annoncer un service d'analyse dans le cloud. La conférence a la réputation de mobiliser les clients et les partenaires les plus fidèles de Salesforce.com, mais Microsoft veut afficher une différence claire entre son offre et celle de son rival pour les clients plus hésitants. « D'un point de vue concurrentiel, le marché voit que Microsoft est combattif », a déclaré dans une interview Fred Studer, directeur général du marketing produit de Dynamics. « Nous voulons joindre l'acte à la parole. Nous disons aux clients de Salesforce.com que s'ils pensent renouveler leur abonnement dans les 12 mois qui viennent, ils doivent auparavant parler avec nous ».

Une offre bien calibré sur site et dans le cloud

Reste à voir comment, le cas échéant, Salesforce.com répondra à la stratégie de prix de Microsoft. Selon un observateur, le fournisseur peut difficilement ignorer ce que fait Microsoft. « En terme de guerre des prix et de valeur offerte au client, c'est très convaincant », a déclaré l'analyste Ray Wang, président et fondateur de Constellation Research. « Ceci dit, la concurrence entre les deux fournisseurs ne se joue pas uniquement autour de l'équation prix/fonctionnalité », a ajouté l'analyste. « De nombreux clients choisissent Dynamics CRM à cause de sa solide intégration à Office 365 », a-t-il déclaré. « Le fait que Microsoft offre des déploiements de CRM sur site et dans le cloud est aussi attractif », a-t-il ajouté, même si le pack annoncé hier ne concerne pas la version sur site.

Les clients de Ray Wang « préfèrent aussi la solution de mobilité de Dynamics CRM, notamment parce qu'ils peuvent facilement étendre les fonctionnalités du produit de base pour l'adapter à des besoins spécifiques », a-t-il ajouté. Cela fait peu de temps que Salesforce.com s'intéresse aux marchés verticaux. Cependant, « beaucoup de clients » de Constellation Research choisissent Salesforce.com quand ils cherchent un produit tournant uniquement dans le cloud, une forte intégration entre les applications de vente et les services à la clientèle. « Ils apprécient aussi le message et les perspectives plus larges offertes par l'entreprise », a encore précisé l'analyste.

samedi 4 octobre 2014

Sessions CRM lors de Convergence 2014 Europe

4 au 6 Novembre à Barcelone

Débutant
-Care Everywhere: an Overview of customer service by Microsoft Dynamics CRM
-Parature and Microsoft Dynamics Unite: Customer self-service
-Selling effectively: an overview of sales by Microsoft Dynamics CRM
-Market smarter – An Overview of Microsoft Dynamics Marketing
-Microsoft Dynamics CRM: Reimagining manufacturing and distribution in a connected world
-Microsoft Dynamics CRM in Financial Services: Winning and retaining customers
-Microsoft Dynamics CRM 2013: Sales productivity in project-based services industries
-What’s new: Microsoft Dynamics CRM 2015
-Let’s engage! Join us to explore our vision, our roadmap and see success in action
-Bank of Ireland: Putting the customer first
-Take your business 100% digital and close deals faster with DocuSign
-Assistance Software: Effective project management with Microsoft Dynamics CRM 2013
-Insight Selling: Powering sales with real-time insights to be more effective
-Mobility with Resco: Get Microsoft Dynamics CRM into phones & tablets

Intermédiaire
-Best practices for customer service in an engagement driven world
-Unified Service Desk: Enabling the super agent!
-The time to modernize your sales organization is now!
-Seeing your sales data in a whole new way
-Sales productivity best practices
-Unleash your marketing potential: Best practices for marketing organizations
-Going deep: Campaign management and email marketing
-Planning to implement Microsoft Dynamics Marketing
-Listen in! How to get Microsoft Social Listening working for you
-XRM today: Explore the power of the platform
-Microsoft Dynamics CRM: Empowering your workforce to deliver unparalleled constituent services

Confirmé
-Parature for multi-channel customer service
-Sales Productivity - Leverage Microsoft Outlook and Power BI integration to make your sales force more productive
-Optimize your Business Processes to drive impact for your business
-Embracing upgrades: Preparing for CRM next
-Overview: Mobile enhancements in productivity and enterprise management
-Design for Cloud with Microsoft Dynamics CRM
-Cloud clarity: All you need to know about Microsoft Dynamics CRM Online
-Microsoft Dynamics Marketing: Technical deep dive

Expert
-Calling all developers: CRM tools today and tomorrow
-Unified Service Desk for Microsoft Dynamics CRM: Deploying maintainable and upgradeable contact center applications

jeudi 2 octobre 2014

Microsoft System Center Management Pack for Dynamics CRM 2013

Version : 6.0.0.9

Pack pour System Center Management pour Microsoft Dynamics CRM 2013 servant à administrer l'application Microsoft Dynamics CRM 2013 depuis Microsoft System Center Operations Manager (SCOM) 2007 SP1 et sur les versions suivantes.

mardi 23 septembre 2014

Correctif cumulatif 1 pour Microsoft Dynamics CRM 2013 Service Pack 1

Version : 6.1.1.132

Fonctionnel
* Tri dans la vue de recherche de l'entité Site
* Liste Marketing
* Liste d'options
* Création d'enregistrements dupliqués
* Sélection du corps d'un courrier électronique fermé
* Navigation entre les pages avec le bouton Enregistrer et nouveau.
* Affichage des notes
* Sous-grille Sales-Team dans une opportunité
* Bouton Ajouter un concurrent
* Révision d'un devis
* Export d'une vue vers Excel
* Sous-grille avec une relation N:N

Administration
* Modèle de courrier électronique avec une pièce jointe

Client Outlook
* Formulaire dans CRM pour Outlook
* Courriers électronique créés en mode hors connexion
* Mise à jour d'une ressource web pour le client CRM pour Outlook
* Mise en forme d'une vue dans le client CRM pour Outlook
* Bouton Convertir en dans le client CRM pour Outlook

Personnalisation
* Barre de commande disparaît lors de l'appel d'une page personnalisée
* Groupe d'option sans étiquette
* Champ subjectid avec une contrainte obligatoire
* Désactivation de l'option CEIP
* Visibilité des onglets par programmation

CRM E-mail Router
* Suivi d'un courrier électronique.

MOCA
* Configuration pour iOS7
* Vues système désactivées

jeudi 11 septembre 2014

Mise à jour : Microsoft Dynamics Marketing Spring '14 Resources

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

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 de des Assemblys pour le correctif cumulatif 1 de Microsoft Dynamics CRM 2013 SP1. Ces Assemblys sont aussi compatibles avec Microsoft Dynamics CRM Online Printemps'14.
* 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 :

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 :
  • 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 compteurDurée en msRemarque
Workflow temps réel7583Impossible de définir la longueur du nombre incrémental
Plugin3450Trop spécifique à l'entité cible
Activité de workflow5060Paramé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 :
  • Entité : Chaîne de caractères
  • Préfixe : Chaîne de caractères
  • Numéro : Décimal
  • Suffixe : Chaîne de caractères
 
 Ce qui donne :

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 compteurDurée en msRemarque
Workflow temps réel7583Impossible de définir la longueur du nombre incrémental
Plugin3450Trop 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.