Rechercher dans ce blog

Affichage des articles dont le libellé est API. Afficher tous les articles
Affichage des articles dont le libellé est API. Afficher tous les articles

samedi 2 février 2013

API : CheckIncomingEmailRequest

Simule l'envoi d'un courrier électronique
CheckIncomingEmailRequest checkIncomingEmailRequest = new CheckIncomingEmailRequest();
checkIncomingEmailRequest.Subject = subject;
checkIncomingEmailRequest.To = deliverPromoteEmailRequest.To;
checkIncomingEmailRequest.From = deliverPromoteEmailRequest.From;
checkIncomingEmailRequest.Cc = String.Empty;
checkIncomingEmailRequest.Bcc = String.Empty;
checkIncomingEmailRequest.MessageId = deliverPromoteEmailRequest.MessageId;
CheckIncomingEmailResponse incomingResponse = Proxy.Execute(
     checkIncomingEmailRequest) as CheckIncomingEmailResponse;

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

API : ExportMappingsImportMapRequest

Export au format XML le mapping pour l'import de données

ExportMappingsImportMapRequest exportRequest = new ExportMappingsImportMapRequest();
exportRequest.ImportMapId = importResponse.ImportMapId;

//Execute la requête
ExportMappingsImportMapResponse exportResponse = (ExportMappingsImportMapResponse)Proxy.Execute(exportRequest);

API : ImportMappingsImportMapRequest

Importe une représentation XML du mappage de données et crée un mappage de données

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);

samedi 28 juillet 2012

API : CreateActivitiesListRequest

Crée une campagne rapide en distribuant les activités aux membres d'une liste marketing

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;