Gartner :
Les 4 premiers sont : Salesforce, Microsoft Dynamics CRM, Oracle Siebel CRM et SAP.
// 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++; }
////// 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--; } }
ExportMappingsImportMapRequest exportRequest = new ExportMappingsImportMapRequest(); exportRequest.ImportMapId = importResponse.ImportMapId; //Execute la requête ExportMappingsImportMapResponse exportResponse = (ExportMappingsImportMapResponse)Proxy.Execute(exportRequest);
ImportMappingsImportMapRequest importRequest = new ImportMappingsImportMapRequest(); //Chemin du fichier xml importRequest.MappingsXml = "C:\\Mapping\\SFMap.xml; importRequest.ReplaceIds = true; //Execute la requête ImportMappingsImportMapResponse importResponse = (ImportMappingsImportMapResponse)Proxy.Execute(importRequest);
CreateActivitiesListRequest request = new CreateActivitiesListRequest() { Activity = activityEntity, ListId = marketingListId, OwnershipOptions = ownershipOption, Propagate = isPropagate, TemplateId = Guid.Empty, FriendlyName = "Quick Campaign for My List" /*+ _uniqStringForThisRun*/, Owner = new EntityReference("systemuser", _currentUser) }; //Execute the request CreateActivitiesListResponse response = (CreateActivitiesListResponse)_serviceProxy.Execute(request); //The response has BulkOperationId. This is the Id of the bulkoperation that mimics QuickCampaign in CRM Guid BOId = response.BulkOperationId;