Rechercher dans ce blog

mardi 4 septembre 2012

SFR et Bull propulsent Numergy dans le « cloud »

LesEchos.fr du 05/09/2012

Dans la bataille du « cloud » à la française, SFR et Bull viennent de remporter une manche. Les deux groupes officialisent aujourd'hui la création de Numergy, la société développée en partenariat avec l'Etat -via la Caisse des Dépôts -et qui a pour vocation d'offrir des services de « cloud computing » aux administrations et aux entreprises. Avec cette annonce, SFR et Bull grillent la politesse à Orange et Thales, qui furent les premiers à initier un projet similaire, baptisé « Andromède ». Ces derniers pourraient toutefois procéder à une annonce dans les prochains jours.
La création de Numergy, basé à Vélizy, en région parisienne, fait suite à l'association en mai de l'opérateur télécoms et du groupe informatique et à leur désir de créer, avec le soutien de l'Etat, « la première centrale à énergie numérique d'Europe », répondant ainsi aux besoins croissants des entreprises en ressources informatiques. Comme prévu, la nouvelle entreprise sera dotée de 225 millions d'euros de capital grâce aux apports respectifs de SFR (47 %), de Bull (20 %) et de la Caisse des Dépôts. Philippe Tavernier, jusqu'à présent patron de Sogeti France, filiale de Capgemini, a été nommé directeur général vendredi, à l'occasion du premier conseil de surveillance de la société. « Philippe Tavernier possède une très bonne connaissance du secteur informatique. Il a aussi démontré une très forte envie de monter ce projet », commente Pierre Barnabé, le directeur général de SFR Business Team. Présidé par Guy Roussel, ancien patron d'Ericsson France, le conseil de surveillance est quant à lui composé de neuf membres, dont deux pour chaque actionnaire et trois indépendants.

Prêt à l'emploi

Trois offres commerciales sont déjà disponibles. Elles seront accessibles via un réseau de partenaires et de distributeurs composé de SSII, d'éditeurs de logiciels et d'opérateurs télécoms. SFR sera l'un des principaux promoteurs de ces offres pour leur lancement. Il sera également l'un des premiers clients, tout comme Bull -sans conditions préférentielles, précisent les dirigeants -, tout en étant aussi fournisseur. Dans un premier temps, les deux partenaires mettront en effet à disposition de Numergy leurs infrastructures informatiques et réseau. « Nous allons commencer avec deux "data centers", précise Philippe Tavernier. D'ici à 2020, nous prévoyons d'en construire une quarantaine, tous localisés en France afin de garantir la souveraineté des données de nos clients. »
Le contexte de crise n'inquiète pas le patron de Numergy. « La conjoncture actuelle incite les entreprises à adopter de nouveaux schémas de fonctionnement. Le modèle du "cloud computing" et du paiement à l'usage en est un. » La crise a justement incité les dirigeants à accélérer la création de la société. « Il était nécessaire de se positionner au plus vite sur ce nouveau marché », estime Philippe Vannier, PDG de Bull, alors que la concurrence devrait bientôt faire rage. Numergy, qui emploiera à terme 400 salariés, prévoit de générer 400 millions d'euros de chiffre d'affaires dans quatre ans, sur un marché estimé à 3 milliards.

dimanche 26 août 2012

Mise à jour du SDK pour CRM 2011 : 5.0.12

Version : 5.0.12

Assemblies/Services :
* Prise en compte de la mise à jour corrective 10.

Mise à jour d'articles:
* Connexion à CRM Online en utilisant Windows Live ID. L'exemple ne support pas l'authentification avec Office 365.
* Information sur les performances dans les bonnes pratique.
* Choix d'outils et de classes pour écrire du code managé.
* Introduction à la création d'une ressource web.
* Optimisation de la recherche rapide et une nouvelle propriété FilterExpression.IsQuickFindFilter.
* Ajout des attributs PartyList qui ne peuvent pas être mappés.
* Fomulaire de lecture optimisée.
* Événements qui sont inclus dans une ressource web HTML lorsque tu ajoutes la pages ClientGlobalContext.js.aspx.
* Utilisation de window.postMessage pour la prise en compte des différents navigateurs.
* Types d'entité à liaison anticipée.
* Nouveautés sur les flux d'activité.

Mise à jour des outils :
* Outil d'export du ruban pour la gestion des entités : goalroolupquery, rollupfield, postfollow et site.
* Gestion de l'OData avec Silverlight.
* Modification du code authentification helper. Il faut maintenant inclure l'assemblie Windows Identify Foundation (Microsoft.IdentityModel.dll) dans le projet.
* Outil SolutionPackager.
* Créer un diagramme de modèle d'entité.

Mise à jour des exemples de code :
* Recherche des enregistrements en utilisant le point de terminaison REST avec Silverlight.
* Se connecter sans utiliser le code helper.
* Utilisation des fichiers app.config et web.config.
* Modifier le statut d'un workflow.
* Se connecter à Microsoft Dynamics CRM avec Java.

PowerShell :
* Appel des cmdlets.

Ruban :
* {!EntityLogicalName} doit être utilisé pour générer un Id pour chaque entité.

Javascript :
* Utilisation de Xrm.Page
* Utilisation de Xrm.Utility.openEntityform
* Utilisation de Xrm.Utility.openWebresource
* Bonne pratique pour écrire du JavaScript pour différents navigateurs.

mercredi 22 août 2012

Les Salons Solutions du 2 au 4 Octobre 2012 CNIT - Paris La Défense


Conférences concernant le CRM

* e-Réputation de l’entreprise sur les blogs, communautés, réseaux sociaux, plates-formes vidéos, médias... : pourquoi il faut impérativement la gérer, et comment ?»

* Choix d’un progiciel de Gestion de la Relation Client pour les forces commerciales mobiles : cahier des charges, solutions en lice, mise en œuvre

* CONFERENCES BONNES PRATIQUES CRM

* Tout ce que vous voulez savoir sur le Social CRM : principe, fonctionnement, acteurs, outils, atouts, limites, fausses bonnes idées,...

* Les nouveaux outils du Digital Marketing, pour une vraie stratégie client internet
CRM sur site client ou dans le Cloud : quels sont les critères-clés pour bien décider ?

vendredi 17 août 2012

Quadrants Forrester et Gartner Q3 2012

Forrester :

Gartner : 

Les 4 premiers sont : Salesforce, Microsoft Dynamics CRM, Oracle Siebel CRM et SAP.

Le correctif cumulatif 10 pour Microsoft Dynamics CRM 2011

Version : 5.0.9690.2740

Fonctionnalités ajoutées :
Intégration avec Microsoft Office 2013
Intégration avec Windows 8
Intégration avec Internet Explorer 10

Document : Optimiser le serveur CRM 2011

Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure

L'optimisation est un équilibrage permanent entre les décisions de conception et de la disponibilité des ressources. Ce livre blanc donne des conseils et des astuces pour optimiser et pour maintenir la performance d'une infrastructure de serveur Microsoft Dynamics CRM 2011.

lundi 13 août 2012

API : GetHeaderColumnsImportFileRequest

Récupère les entêtes des colonnes du fichier source; ou récupère les entêtes de colonnes générées si le fichier source ne contient pas d'entêtes de colonnes
// Create an import (data import) entity instance.
import import = new import();
import.name = "Importing data";

// Distinguish between an import and an update.
import.isimport = new CrmBoolean();
import.isimport.Value = true;
import.modecode = new Picklist();
import.modecode.Value = ImportModeCode.Create; 

// Create the import (data import) entity instance. 
// in Microsoft Dynamics CRM
Guid importId = service.Create(import);

// Create a logical source file of the data being imported.
importfile importFile = new importfile();
importFile.name = "Account record import.";
importFile.source = "import_accounts.csv";
importFile.sourceentityname = "Account_1";
importFile.targetentityname = EntityName.account.ToString();

// Read contents from disk.
importFile.content = ReadCsvFile("import_accounts.csv");

// Configure delimiters.
importFile.datadelimitercode = new Picklist();
importFile.datadelimitercode.Value = ImportDataDelimiter.DoubleQuote;
importFile.fielddelimitercode = new Picklist();
importFile.fielddelimitercode.Value = ImportFieldDelimiter.Comma;

// Do not allow duplicate records to import.
importFile.enableduplicatedetection = new CrmBoolean();
importFile.enableduplicatedetection.Value = false;

// Relate the import file to the parent import (data import).
importFile.importid = new Lookup();
importFile.importid.type = EntityName.import.ToString();
importFile.importid.Value = importId;

// Relate this import file to the parent data map.
importFile.importmapid = new Lookup();
importFile.importmapid.type = EntityName.importmap.ToString();
importFile.importmapid.Value = importMapId;

// Do not use the first row during import.
importFile.isfirstrowheader = new CrmBoolean();
importFile.isfirstrowheader.Value = true;

// Specify to process the column.
importFile.processcode = new Picklist();
importFile.processcode.Value = ImportProcessCode.Process;

// Specify the current user as the record owner.
WhoAmIRequest systemUserRequest = new WhoAmIRequest();
WhoAmIResponse systemUserReponse = (WhoAmIResponse)service.Execute(systemUserRequest);

// Specify the owner ID.
importFile.recordsownerid = new Lookup();
importFile.recordsownerid.type = EntityName.systemuser.ToString();
importFile.recordsownerid.Value = systemUserReponse.UserId;

// Create the import file.
Guid importFileId = service.Create(importFile);

// Retrieve the header columns used in the import file.
GetHeaderColumnsImportFileRequest headerColumnsRequest = new GetHeaderColumnsImportFileRequest();
headerColumnsRequest.ImportFileId = importFileId;
GetHeaderColumnsImportFileResponse headerColumnsResponse = (GetHeaderColumnsImportFileResponse)service.Execute(headerColumnsRequest);

// Output the header columns.
int columnNum = 1;
foreach(string headerName in headerColumnsResponse.Columns)
{
Console.WriteLine("Column[" + columnNum.ToString() + "] = " + headerName);
columnNum++;
}

vendredi 10 août 2012

Comment importer les pièces jointes par programme

How to Import attachments programmatically

Voici les étapes:
1. Créer un fichier CSV contenant les pièces jointes que tu souhaites importer.
2. créer un enregistrement d'import.
3. Créer un enregistrement pour les pièces jointes qui contient le contenu des fichiers actuels.
4. Créer un enregistrement qui contient le mapping.
5. Appeler les méthodes SDK d'import.

      /// 
 
       /// Impport attachments in CRM
 
       /// 
 
       public void ImportAttachmentRecords()
 
       {            
 
OrganizationServiceProxy _serviceProxy; // Initialize the _serviceProxy appropriately.
 
           // 1. Create a CSV file containing the details of attachments that you want to import.
 
           string fileName = DateTime.UtcNow.Ticks + ".txt";
 
           string attachmentContent = "This is the attachment content"; // Put your attachment contents here.
 
           string attachmentData = Convert.ToBase64String(Encoding.UTF8.GetBytes(attachmentContent));
 
           StringBuilder sb = new StringBuilder();
 
           //Add header row
 
           sb.AppendLine("Title, Document, File Name, Regarding");
 
           string accountId = "04AFD3BF-16D6-E111-A43C-00155D187A0A"; // This is the unique id of CRM record e.g. account with which you want to attach this note.
 
           string dataRow = "attachment1, " + fileName + ", " + fileName + "," + accountId;
 
           sb.AppendLine(dataRow);
 
           string csvData = sb.ToString();
 
           // 2.    Create the root import record
 
           Import import = new Import()
 
           {
 
               ModeCode = new OptionSetValue((int)ImportModeCode.Create),
 
               Name = "Importing data"
 
           };
 
           Guid importId = _serviceProxy.Create(import);
 
          // 3.    Create import file record for attachments which contains actual file contents.
 
           ImportFile importAttachmentFile = new ImportFile()
 
           {
 
               Content = attachmentData, // Read contents from disk.
 
               Name = fileName,
 
               UseSystemMap = true,
 
               ImportId = new EntityReference(Import.EntityLogicalName, importId),
 
               ProcessCode =
 
                   new OptionSetValue((int)ImportFileProcessCode.Internal),
 
               FileTypeCode = new OptionSetValue(2)
 
           };
 
           Guid importAttachmentFileId = _serviceProxy.Create(importAttachmentFile);
 
           // 4.    Create import file record which contains mapping for attachments.
 
           ImportFile importFile = new ImportFile()
 
           {
 
               Content = csvData, // Read contents from disk.
 
               Name = "Attachment Import File",
 
               IsFirstRowHeader = true,
 
               UseSystemMap = true,
 
               Source = "Import Attachment",
 
               SourceEntityName = "attachment",
 
               TargetEntityName = Annotation.EntityLogicalName,
 
               ImportId = new EntityReference(Import.EntityLogicalName, importId),
 
               EnableDuplicateDetection = false,
 
               FieldDelimiterCode =
 
                   new OptionSetValue((int)ImportFileFieldDelimiterCode.Comma),
 
               DataDelimiterCode =
 
                   new OptionSetValue((int)ImportFileDataDelimiterCode.DoubleQuote),
 
               ProcessCode =
 
                   new OptionSetValue((int)ImportFileProcessCode.Process)
 
           };
 
           Guid importFileId = _serviceProxy.Create(importFile);
 
           // 5.    Call import SDK APIs
 
           // Parse the import file.
 
           ParseImportRequest parseImportRequest = new ParseImportRequest()
 
           {
 
               ImportId = importId
 
           };
 
           ParseImportResponse parseImportResponse =
 
               (ParseImportResponse)_serviceProxy.Execute(parseImportRequest);
 
           WaitForAsyncJobCompletion(_serviceProxy, parseImportResponse.AsyncOperationId);
 
           // Transform the import
 
           TransformImportRequest transformImportRequest = new TransformImportRequest()
 
           {
 
               ImportId = importId
 
           };
 
           TransformImportResponse transformImportResponse =
 
               (TransformImportResponse)_serviceProxy.Execute(transformImportRequest);
 
           WaitForAsyncJobCompletion(_serviceProxy, transformImportResponse.AsyncOperationId);
 
           // Upload the records.
 
           ImportRecordsImportRequest importRequest = new ImportRecordsImportRequest()
 
           {
 
               ImportId = importId
 
           };
 
           ImportRecordsImportResponse importResponse =
 
               (ImportRecordsImportResponse)_serviceProxy.Execute(importRequest);
 
           WaitForAsyncJobCompletion(_serviceProxy, importResponse.AsyncOperationId);
 
       }
 
       /// 
 
       /// Waits for the async job to complete.
 
       /// 
 
       /// 
public void WaitForAsyncJobCompletion(OrganizationServiceProxy serviceProxy, Guid asyncJobId)
 
       {
 
           ColumnSet cs = new ColumnSet("statecode", "statuscode");
 
           AsyncOperation asyncjob =
 
               (AsyncOperation)serviceProxy.Retrieve("asyncoperation", asyncJobId, cs);
 
           int retryCount = 100;
 
           while (asyncjob.StateCode.Value != AsyncOperationState.Completed && retryCount > 0)
 
           {
 
               asyncjob = (AsyncOperation)serviceProxy.Retrieve("asyncoperation", asyncJobId, cs);
 
               System.Threading.Thread.Sleep(2000);
 
               retryCount--;
 
           }
 
       }

dimanche 29 juillet 2012

Cacher des groupes de navigation

Pour cacher un groupe de navigation, nous pouvons utiliser du javascript. Mais on peut aussi modifier la solution. Exporter dans une solution, l'entité concernée. Modifier le fichier customizations.xml. Rechercher les balises suivantes :


Supprimer les groupes de navigation non souhaités.


Ajouter le fichier customization.xml dans la solution. Importer la solution et publier.