Geeks•ms
Todo lo que los geeks de Windows y .Net tienen que contar
Juega a la Cura, código de registro: laresistencia

CRM 3.0 Conectar CRM con B.D. externa

valorado por 0 usuarios
Este artículo tiene 4 Respuestas | 2 Seguidores

Contribuyente Top 500
Envíos: 9
Puntos: 150
nak Enviado: 21/9/2007 12:31

Hola, tengo el siguiente problema. Tengo una aplicación que trabaja con una base de datos sql, y tengo que conectarla a CRM 3.0 ( y viceversa ).

El problema es que no se que posibilidades tengo, es decir, si crm podria trabajar con una base de datos de otro servidor interno dentro de la misma red, si solo se podria con una copia de la base de datos en cada servidor y sincronizarse... Necesito que me echen una mano, gracias estoy un poco perdido.-

 -He visto Microsoft Dynamics CRM Synchronization Tool, pero no se si seria la herramienta adecuada.

Contribuyente Top 200
Envíos: 20
Puntos: 250

Hola,

 Lo que dices tiene sentido, y me recuerdas a mi mismo meses atras :)

Te comento lo que hice yo. Tengo un base de datos del ERP en Firebird y la del CRM en SQL. Tenia que conectar el CRM a dicha base de datos, para sustraer información y actualizarla en dos sentidos. Debes tener en cuenta:

  1. Debes programar el conector, es decir, un programa que te sincronice los campos que desees( yo he usado .Net)
  2. Debes utilizar webservices.
  3. Te recomendaria programar un Windows service que hiciera la sincronización cada X tiempo, (es lo que he hecho yo)

Una vez asumido estos pasos te recomendaria el libro que seguro que no te dejara indiferente: Working with  Microsoft Dynamics CRM 3.0 de Mike Snyder y Jim Steger. Ahí te explican alguna cosilla del tema.

Tambien puedes recurrir a CRMSandBox o este web de Marco. Hay información de lo básico aunque despues te saldrán montón de dudas...que te volveràn aqui.

Espero haberte ayudado un poquito 

Salud

  • | Puntos de post: 20
Contribuyente Top 50
Hombre
Envíos: 329
Puntos: 9,100

Hola,

Lo que te comenta XaRz es una buena solución, sobre todo para integraciones relativamente sencillas del CRM con alguna otra aplicación a medida. 

Por aportar más ideas, otra solución que funciona muy bien en desarrollos de integraciones a medida entre aplicaciones es utilizar MSMQ (o cualquier otra tecnología de mensajería fiable) para realizar la comunicación entre ambos extremos (ERP y CRM). Ya que aporta unas características de fiabilidad muy recomendables. A ver si un día de estos escribo un post comentándo esta solución.

También podrías utilizar herramientas de terceros para realizar estas integraciones, por ejemplo la de Scribe Software. O en integraciones mucho más complejas dispones de herramientas como BizzTalk.

Si quieres cuentanos más detalles de como es la aplicación y la integración que necesitas, y entre todos te intentaremos echar una mano

Un saludo

Contribuyente Top 500
Envíos: 9
Puntos: 150

 Hola Marcos, gracias a ti y a XaRz por vuestras respuestas. Os voy a explicar con mas detalle mi problema que cada vez se me hace mas grande.

Mi aplicación ERP trabaja con una base de datos SQL, por lo que supongo que esto debe facilitar un poco las cosas.

Me encuentro perdido porque hace tiempo que no toco ciertas cosas y el terminar este trabajo es de vital importancia, ya me entendéis.

Vamos a empezar.

1-Yo necesito acceder a una tabla de esa base de datos ej. clientes. 

Crm trabaja con una base de datos distinta. Existe una entidad contacto (modificable no ¡¡) . Por lo tanto como lo tengo que hacer como tengo que readaptar esa entidad y como hago que acceda a los datos pero de la otra base de datos.

No existira ningun problema si tratamos ej. con esos datos clientes de otra base de datos y otros datos permanecen en B.D por defecto de Crm, debe ser posible no¿ el poder trabajar con varias bases de datos sin problemas. NO¡¡¡¡

2- La segunda parte es hacer lo mismo pero al contrario, es decir como puedo hacer que datos existentes en la Aplicación CRM (base de datos), hacerlos disponible para la otra aplicación.. 

+Por ultimo Si quisiera también una relación con una aplicación de fax ... como podría hacer eso

Bueno espero que me podáis echar un cable, si necesitáis mas información os la enviare un cordial Saludo Nak 

 

  • | Puntos de post: 20
Contribuyente Top 200
Envíos: 20
Puntos: 250

Hola,

 

A ver si te puedo ayudar a aclarar conceptos:

  1. ERP i CRM usan bases de datos distintas, por lo que la única manera de tener datos sincronizados entre las tablas de las bases de datos es ir mapeando los campos de cada tabla e insertar la información transformando los tipos de las variables cuando se deba.
  2. Debes programar dos proyectos: Uno que volque datos al CRM y otro  que volque datos al ERP.Por ejemplo, una cosa que me ayudó mucho a mi, fue poder ejecutar estructuras de C# (funciones) que me permitieran recuperar datos del CRM y del ERP, y aprender los requisitos que necessitas para poder insertar objetos de las distintas classes del CRM. (el SDK del CRM lo tienes en las páginas de microsoft).Ejemplos de código:

//Esto lo que hace es conectarse a una base de datos de SQL y cambiar valores de una tabla. OJO!!!! Lo que hace no és un buien ejemplo! ya que sòn cosas no soportadas por Microsoft. Lo que quiero que uses es la connexion. A partir de ahi puedes guardarlo todo en un dataset y tratarlo 

public
static void UpdateStateSalesOrder(string comguid, int state, int status)

{

SqlConnection sqlCon = new System.Data.SqlClient.SqlConnection();

sqlCon.ConnectionString = "Data Source=crmserver;Initial Catalog=XXX_MSCRM;Persist Security Info=False;" +

"Integrated Security=SSPI;";

sqlCon.FireInfoMessageEventOnUserErrors = false;SqlCommand CmdL = new SqlCommand("", sqlCon);

CmdL.Connection.Open();

CmdL.CommandText =
String.Concat("update salesorder set statecode=" + state.ToString() + ", statuscode=" + status.ToString() + " Where salesorderid='" + comguid.ToString() + "'");

CmdL.ExecuteNonQuery();

CmdL.Connection.Close();

}

//Esto lo que hace és una conexión a una base de datos Firebird

public static DataSet ConnexioFBRevised(string command)

{

FirebirdSql.Data.FirebirdClient.
FbConnection fbCon =

new FirebirdSql.Data.FirebirdClient.FbConnection(@"Server=192.168.0.86;" +

"User=XXXX;Password=XXXXX;Database=/home/sg2/XXXX.fdb");

FirebirdSql.Data.FirebirdClient.FbCommand cmd = new

FirebirdSql.Data.FirebirdClient.FbCommand(command, fbCon);

DataSet ds = new DataSet();

FirebirdSql.Data.FirebirdClient.FbDataAdapter fbData = new FirebirdSql.Data.FirebirdClient.FbDataAdapter(cmd);fbData.SelectCommand.CommandType = CommandType.Text;

fbData.Fill(ds);

return ds;

}

//Y la llamada a la función anterior. Fijate que lo pongo todo en un dataset, eso quiere decir que el select que yo ejecuto me queda guardadado en un dataSet y después lo puedo tratar con bucles y demás. 

... 

DataSet ds = new DataSet(); 

string command = "Select DISTINCT" +

" CLIE_CODI " +

" , CLIE_NOMBRE_COMERCIAL " +

" , CLIE_DESC_MAYUS " +

" , SECC_DESC " +

" , PEVC_CODI " +

" , PEVC_FECHA_ALTA " +

" , PEVC_IMPORTE_NETO " +

" , SITUINICIAL.SITU_CODI " +

" , PEVC_ESTADO_DOC " +

" , FPAG_DESC " +

" , SERI_CODI " +

" , REPR_CODI " +

" , SITUVENC.SITU_CODI VENC_CODI " +

" , SITUVENC.SITU_DESC VENC_DESC " +

", SECC_CODI " +

", PEVC_PK " +

", PEVC_DTO_PORCENTAJE1 " +

", PEVC_DTO_PORCENTAJE2 " +

", CLIE_PK " +

", PEVC_MODI " +

"FROM PEVC " +

"JOIN SITU SITUINICIAL on (SITUINICIAL.SITU_PK = PEVC_SITU_PK) " +

"JOIN PEVCTOTL on PEVCTOTL_PEVC_PK=PEVC_PK " +

"JOIN CLIE on CLIE_PK=PEVC_CLIE_PK " +

"left JOIN SECC on SECC_PK=PEVC_SECC_pk " +

"JOIN FPAG on PEVC_FPAG_PK=FPAG_PK " +

"JOIN SERI on SERI_PK=PEVC_SERI_PK " +

"JOIN REPRCLIE on cLIE_PK=REPRCLIE_CLIE_PK " +

"JOIN REPR on REPR_PK=REPRCLIE_REPR_PK " +

"JOIN SITU SITUVENC on ((SITUVENC.SITU_PK = PEVC_VENC_PK) AND " +

"(SITUVENC.SITU_TIPO='VE') AND (SITUVENC.SITU_VENTAS=1)) " +

"Where " +

"CLIE_CODI<>'00000' AND " +

"CLIE_CODI NOT LIKE '9%' AND " +

"CLIE_PK/10000000000=1001 AND REPRCLIE_POR_DEFECTO=1 AND " +

"(SITUINICIAL.SITU_CODI in ('00','01', '02','10', '20','21','22', '23')) " +

"AND REPR_CODI in ("+

"'02','S02','E2','C2',"+

"'S07','E7','C7','07'," +

"'81','S81','F81',"+

"'136','S136','F136','69','S69', "+

"'36','S36','E36','A36','B36','C36','SA36','SB36','SC36',"+

"'E69','55','S55','F55'," +

"'E55','07', 'S07','E7','C7','02','S02','E2','C2', 'A69','B69','C69','SA69','SB69','SC69',"+

"'135','S135','F135') " +

"AND PEVC_ANULADO=0 AND PEVC_FECHA_ALTA>'2007/06/30' ORDER BY CLIE_CODI";

ds = ERP.ConnexioFBRevised(command);

En fin. Para que veas que no és tan difícil, lo que pasa es que debes tener claros conceptos de programación. Yo ya te aviso que no los tengo del todo y por eso voy lento. Pero avanzar avanzo :)

Espero haber arrojado un poco de luz.

Salud

Página 1 de 1 (5 elementos) | RSS
Juega a la Cura, código de registro: laresistencia