Integración de accounts entre MS Dynamics CRM y Eloqua con C#

En este artículo vamos a ver como hemos realizado nuestra primera integración entre Eloqua y Dynamics CRM que en este caso es la versión de 2015 pero que es aplicable a cualquier versión del CRM de Microsoft, ya que aunque solo se consulte el CRM, si tuviéramos que insertar también sería igual, Microsoft no cambia la forma de trabajar con sus webservices desde CRM 4.0.

Lo primero que hacemos es una llamada a los servicios de Mcirosof para obtener los contactos del CRM para así poderlos integrar directamente en Eloqua. En este caso práctico no se tienen en cuenta si es actualización o inserción, es más no hace falta tenerlo en cuenta ya que a través de este método que nos proporciona Eloqua, es el sistema a través de la cuenta de email la que se encarga de actualizar o insertar un nuevo contacto si este existe o por el contrario no está registrado en el sistema de Eloqua.

Integrar Eloqua y MS Dynamics con C# a través de la Bulk API

Vamos con Eloqua directamente y obviaremos como obtener los contactos del CRM.

Lo primero que tenemos es una clase llamada ImportHelper que realiza el “montaje” de las diferentes peticiones de tipo REST, hemos usado está tecnología ya que los servicios Web de Eloqua dejarán de tener soporte por parte de Oracle en octubre de este año por lo que la tendencia de los webservice aunque seguirán funcionando es a desaparecer.

La clase ImportHelper tiene una serie de métodos, en el constructor lo que hacemos entre otras cosas es definir la url Base, que es para todo el mundo igual “https://secure.eloqua.com/API/Bulk/1.0/” si os dais cuenta estamos llamando a la BulkApi de Eloqua.

public CtImportHelper(string instance, string user, string password, string baseUrl)
{
_client = new RestClient(baseUrl) { Authenticator = new HttpBasicAuthenticator(instance + “\” + user, password) };
}

El constructor que vemos arriba llama a la función RestClient pasandole los parámetro neesarios para la conexión, esta función RestClient se encuentra en la clase RestClient de la API de Eloqua que está disponible en GitHub con diferentes ejemplos.

Una vez creado este objeto creamos una lista que contiene un diccionario de tipo <string,string>:

List<Dictionary<string, string>> list8 = new List<Dictionary<string, string>>();

En este diccionario almacenaremos los datos para poder insertarlos en Eloqua de la siguiente forma:

Dictionary<string, string> fieldsb = new Dictionary<string, string>
{
//{“account”, “{{Contact.Field(C_EmailAddress)}}”},
{“C_Department1”, department},
{“C_EmailAddress”, emailaddress1},
{“C_FirstName”,firstname},
{“C_LastName”,lastname},
{“C_BusPhone”,telephone1},
{“C_Title”,jobtitle},
{“C_Valid_Email1”,dev_correovalido},
{“C_Linkedin_Handle1”,dev_perfillinkedin},
{“C_Twitter_Handle1”,devperfiltwweeter},
{“C_SFDCAccountID”, parentcustomerid},
{“C_State_Prov”,address1_stateorprovince}
//{“donotbulkemail”, “{{Contact.Field(C_FirstName)}}”},
//{“statecode”, “{{Contact.Field(C_FirstName)}}”}
};

 

Los campos de Eloqua a la “izquierda” y los valores de estos a la derecha, hecho esto llamamos al método ImportData, está clase realizará la llamada a Eloqua para crear los contactos o actualizarlos con los valores que tengamos almacenados en está lista.

public Sync ImportData(string importUri, List<Dictionary<string, string>> data)
{
RestRequest request = new RestRequest(Method.POST)
{
Resource = importUri + “/data”,
RequestFormat = DataFormat.Json
};
request.AddBody(data);

IRestResponse<Sync> response = _client.Execute<Sync>(request);
Sync sync = response.Data;

return sync;
}

Esto se realiza con el objeto Request al que tendremos que informar la propiedad resource, y el formato que en este caso es JSON, la otra opción es hacerlo mediante XML. hecho esto solo nos queda llamar a la función que ejecuta la sincronización y recoger el resultado.

Este artículo es un primer avance de como realizar una inserción/actualización sin más habrá que entrar en profundidad más adelante para saber como actuar dependiendo de las necesidades de cada proyecto.

Blog
Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar

Menú