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;