CRM Help
 

SERVIZI WEB DEL CRM - Interazione con il CRM mediante flussi XML

PRESENTAZIONE

Il CRM offre la possibilità di avere diverse integrazioni in modalità BackEnd sfruttando le potenzialità di MS SQL Server (DTS, ETL, comandi schedulati, …) ovvero attraverso servizi custom SOAP, che consentono di creare dei flussi di import/export ed allineamento dati costante o periodico.

E’ inoltre possibile attraverso le funzionalità offerte dal macrolinguaggio interno Simple# renderizzare all’utente finale delle pagine web dinamiche ed in tempo reale di informazioni live presenti in altri sistemi gestionali (es. Legacy/Erp o altri DB).

E’ infine disponibile un metodo semplice ma molto potente e completamente configurabile per fornire accesso ai dati del sistema CRM ad applicazioni esterne, che possono così recuperare qualsiasi informazione attraverso chiamate http, ottenendo semplici stream in formato XML.

 

Attraverso i servizi Web messi a disposizione dalla pagina GETCRMINFO.aspx è possibile svolgere le seguenti funzionalità:

  • ottenere informazioni in formato XML con una semplice chiamate Web (passando parametri nella modalità preferita POST oppure GET)

  • ottenere informazioni nel formato XML nativo di SQL Server

  • inviare aggiornamenti di stato (es. cambiare lo stato di un'offerta) o di anagrafiche

  • ottenere flussi dati per alimentare Microsoft Excel, al fine di costruire rapidamente semplici e funzionali Cruscotti di Analisi mediante l'utilizzo delle funzionalità di Excel (es. PIVOT)

  • scaricare i file presenti nel sistema di archiviazione del CRM (Megabiblos)

 

L'utilizzo di questi servizi Web avviene nella massima sicurezza in quanto ogni richiesta dovrà essere corredata dalle credenziali di accesso al CRM (un utente del CRM). Tutte le richieste inoltre possono essere registrate nei log tecnici del sistema.

E' possibile altresì attivare ulteriori protezioni sistemistiche direttamente sul file GETCRMINFO.aspx, presente nella cartella di installazione del CRM. Così facendo oltre alle credenziali del CRM possono venire richieste le credenziali di Windows.

 

L'output che viene prodotto da GETCRMINFO dipende:

- dai parametri forniti in fase di chiamata

- dal tipo di QUERY SQL impostata nei comandi personalizzati. In particolare se la query restiuisce un normale "recordset" l'output è costituito da un flusso XML formato secondo le regole del CRM.

 

    • Se la query restituisce già un file XML mediante l'utilizzo della clausola "FOR XML AUTO" di SQL

 

SELECT TOP 2000 RAGSOC, PROV, CITTÀ AS CITTA, TEL1, IDAGENTE, INDIRIZZO, EMAIL1 FROM CLIENTI FOR XML AUTO, ELEMENTS, ROOT('TEST')

 

CHIAMATA

La chiamata dovrà essere avviata al seguente URL:

http://serverCRM/GetCrmInfo.aspx

dove <serverCRM> corrisponde all’indirizzo di accesso del CRM.

Esempio: http://crm.miaazienda.it/getcrminfo.aspx

 

Istruzioni per l'uso della pagina GetCrmInfo.aspx

Si deve passare alla pagina GetCrmInfo.aspx un campo Params contenente un XML con il formato ESTESO:

    <execsql>

        <connection>nome connessione CRM</connection>

        <user>utente CRM</user>

        <password>password utente CRM</password>

        <allowsamelogin>opzionale: se 'true' o '1' permette login multipli per lo stesso user</allowsamelogin>

            <sqlcommandid>id o Codice GUID del comando sql da eseguire</sqlcommandid>

        oppure

            <megabiblosid>codice documento Megabiblos da scaricare</megabiblosid>

        <format>opzionale: formato dei risultati (XML o CSV) - viene considerato solo per comandi SQL che restituiscono record di risultati. Il default è XML</format>

        <parameters>

            <parameter id="nome parametro 1">valore 1</parameter>

            <parameter id="nome parametro 2">valore 2</parameter>

            ...

        </parameters>

    </execsql>

 

oppure un XML con il formato RIDOTTO:

    <e>

        <c>nome connessione CRM</c>

        <u>utente CRM</u>

        <p>password utente CRM</p>

        <a>opzionale: se 'true' o '1' permette login multipli per lo stesso user</a>

            <s>id o Codice GUID del comando sql da eseguire</s>

        oppure

            <m>codice documento Megabiblos da scaricare</m>

        <f>opzionale: formato dei risultati (XML o CSV) - viene considerato solo per comandi SQL che restituiscono record di risultati. Il default è XML</f>

        <r>

            <t id="nome parametro 1">valore 1</t>

            <t id="nome parametro 2">valore 2</t>

            ...

        </r>

    </e>

 

PARAMETRI [[parameters]] ed altri campi variabili

Alla chiamata devono essere inviati dei parametri in modalità POST oppure GET.

Sul CRM è possibile memorizzare traccia di tutte le chiamate attivando nei log tecnici quelli di tipo "Info".

I parametri vanno passati in ogni caso mediante un flusso XML molto semplice:

  • nel caso di modalità POST (consigliata per maggiore sicurezza) è necessario passare il flusso XML in un campo di input con nome Params con il seguente formato:

 

<execsql>

<connection>nome connessione bcom CRM</connection>

<user>utente bcom CRM</user>

<password>password utente bcom CRM</password>

 

<sqlcommandid>id commando sql da eseguire</sqlcommandid>

<format>opzionale: formato dei risultati (XML o CSV) - viene considerato solo per comandi SQL che restituiscono record di risultati. Il default è XML</format>

 

oppure

 

<megabiblosid>codice documento Megabiblos da scaricare</megabiblosid>

<parameters>

<parameter id=”nome parametro 1”>valore 1</parameter>

<parameter id=”nome parametro 2”>valore 2</parameter>

...

</parameters>

</execsql>

 

  • Nel caso di modalità GET è invece sufficiente fare l'encoding corretto dei caratteri (es. <, >, /, ecc...) è passare tutta l'intera stringa XML sull'URL.

 

La connessione al server CRM verrà effettuata con le credenziali dell’utente indicato; l’utente potrà essere già connesso al server CRM, ma in tal caso al termine l'utente risulterà "sconnesso".

Per questo si consiglia l’utilizzo di un account dedicato per l’esecuzione dei comandi GetCrmInfo.

 

[id commando sql da eseguire]

è l’identificativo del comando SQL che verrà eseguito ed il cui risultato costituisce il flusso XML oppure CSV della risposta. Solitamente si tratta di un comando di SELECT parametrico (i cui parametri vengono passati in fase di chiamata) ma può anche essere un comando di UPDATE o INSERT oppure una STORED PROCEDURE. In quest’ultimo caso verrà restituito solamente il numero di record aggiornati oppure il messaggio di Sql Server.

La gestione di questi comandi si trova nel menù Utilità / Comandi personalizzati e Schedulazioni del tool Client/Server.

 

Eventuali parametri nei comandi SQL potranno essere indicati con la sintassi [[nome parametro]] e nella chiamata alla pagina GetCrmInfo.aspx dovranno essere specificati i nomi e i valori di tutti i parametri presenti nel comando SQL che si vuole eseguire; se nel comando SQL non sono presenti parametri, il tag <parameters> può essere omesso.

 

VARIABILI DISPONIBILI

Oltre ai parametri che è possibile passare in fase di chiamata, prima di eseguire il comando il sistema effettua la sostituzione di tutti i nomi dei campi modulo presenti nel comando SQL impostato.

I campi modulo utilizzabili, sempre con la sintassi [[nomecampo]], sono gli stessi utilizzabili all'interno del Simple# 2.0 dell'Home page del CRM e che si possono ottenere andando nell'editor del Simple# e premendo l'icona informativa "Elenco Campi Modulo".

 

Ecco un esempio di QUERY parametri con i nomi dei campi modulo:

SELECT '[[NOMEUTENTE]]' AS NOMEUTENTE,RAGSOC,TEL1

FROM CLIENTI WHERE [[FILTROVISIBILITACLIENTI]]

 

RISPOSTA

In risposta alla chiamata si ottiene un file XML composto come segue:

 

L'output seguirà il seguente schema:

 

Come si nota i parametri <sqlcommandid> e <megabiblodid> sono mutuamente esclusivi.

Il formato CSV* consente di ottenere le informazioni nel formato in modo più rapido ed occupando meno banda Internet in quanto il formato è privo di tutti i classici Tag XML.

*comma-separated values (abbreviato in CSV) è un formato di file basato su file di testo utilizzato per l'importazione ed esportazione (ad esempio da fogli elettronici o database) di una tabella di dati.

 

Vedremo in seguito il suo tipico utilizzo.

 

XML FORMATO CRM

Il formato generato dal CRM nel caso di una query di tipo SELECT normale è il seguente:

<execsql>

<results records=”num. record restituiti”>

<record id=”num. record”>

<field name=”nome campo 1”>valore</field>

<field name=”nome campo 2”>valore</field>

...

</record>

...

</results>

<error>

Messaggio di errore nell’esecuzione del comando SQL

</error>

</execsql>

 

Il tag <results> sarà vuoto in caso di comando SQL che non restituisce alcun record; in caso di comando SQL che modifica i dati, invece, sarà presente un solo tag <record> con un unico <field> con ID “Affected records” e valore pari al numero di record modificati.

Il tag <error> sarà presente in caso di errori nell’accesso al server CRM o nell’esecuzione del comando SQL e riporterà il messaggio di errore restituito dal server.

 

XML formato SQL

Il formato generato dal CRM nel caso di una query di tipo SELECT ... FOR XML AUTO, ad esempio:

SELECT TOP 2 RAGSOC, PROV, CITTÀ AS CITTA, TEL1, IDAGENTE, INDIRIZZO, EMAIL1 FROM CLIENTI FOR XML AUTO, ELEMENTS, ROOT('TEST')

Sarà simile al seguente, ovvero senza alcuna alterazione da parte del CRM rispetto all'output di SQL Server.

<TEST>

  <CLIENTI>

    <RAGSOC>Rossi spa</RAGSOC>

    <PROV>PD</PROV>

    <CITTA>ABANO TERME</CITTA>

    <TEL1>00000000</TEL1>

    <IDAGENTE>13</IDAGENTE>

    <INDIRIZZO>VERDI 2</INDIRIZZO>

    <EMAIL1>rossi@rossi.it</EMAIL1>

  </CLIENTI>

  <CLIENTI>

    <RAGSOC>Roberto Lorenzetti</RAGSOC>

    <PROV>VA</PROV>

    <CITTA>BUSTO ARSIZIO</CITTA>

    <TEL1>101010101010</TEL1>

    <IDAGENTE>11</IDAGENTE>

    <INDIRIZZO>SILVESTRE</INDIRIZZO>

  </CLIENTI>

</TEST>

 

Output in formato CSV

Il formato generato dal CRM nel caso di una query di tipo SELECT normale e parametro

<format>CSV </format>

Sarà simile al seguente, ovvero

 

ragsoc;prov;citta;tel1;idagente;indirizzo;email1

ACME SPA;MI;MILANO;03319351;36;CORSO SEMPIONE;prova@prova.com

ACME SPA;MI;MILANO;03319351;36;CORSO SEMPIONE;prova@prova.com

 

Questo formato è utile per creare delle connessioni dati dinamiche direttamente dall'interno di Microsoft Excel verso il CRM, al fine di creare così dei cruscotti di consultazione pratici, rapidi e disponibili anche in modalità OffLine.

Il tag <error> sarà presente anche in questo in caso se durante l’accesso al server CRM o nell’esecuzione del comando SQL avvengono delle anomalie che devono essere segnalate al chiamante.

 

PROBLEMATICHE DI SICUREZZA

La connettività HTTP può essere impostata dal sistemista di fiducia in modalità HTTPS* al fine di garantire una maggiore sicurezza a questo tipo di richieste.

Inoltre è possibile anche abilitare l'autenticazione a livello di Windows per la specifica risorsa "GetCrmInfo.aspx". Così facendo l'accesso Web alle informazioni del CRM sarà criptato e protetto.

 

*L'HTTPS (Hypertext Transfer Protocol over Secure Socket Layer) è il risultato dell'applicazione di un protocollo di crittografia asimmetrica al protocollo di trasferimento di ipertesti HTTP. Viene utilizzato per garantire trasferimenti riservati di dati nel web, in modo da impedire intercettazioni dei contenuti che potrebbero essere effettuati tramite la tecnica del man in the middle.

 

ESEMPIO

Supponiamo si voglia ottenere con una semplice chiamata HTTP la lista delle trattative in corso, confermate, perse, ecc. può essere ottenuta con la query seguente, in cui il parametro [[stato ordine]] verrà sostituito di volta in volta con il valore corrispondente allo stato delle trattative che si desidera recuperare dal database:

 

SELECT

numeroordine AS [N. Ordine],

agenti.cognome AS Agente,

clienti.ragsoc AS [Rag. Soc.],

provenienza,

dataordine

FROM

ORDINI

INNER JOIN

PROVENIENZE

ON (provenienze.idprovenienza=ordini.idprovenienza)

INNER JOIN

AGENTI

ON (ordini.idagente=agenti.idagente)

INNER JOIN

CLIENTI

ON (ordini.idcliente=clienti.idcliente)

WHERE

ordini.stato=[[stato ordine]]

ORDER BY agenti.cognome

 

Supponendo di aver memorizzato la query nel database del CRM come comando personalizzato con IDComando 11 e di voler selezionare le trattative in corso (che hanno, ad esempio, stato ordine 35), la pagina GetCrmInfo.aspx dovrà essere richiamata passandole come parametro l’XML seguente (nell’ipotesi che la connessione al database sia stata salvata con il nome DBCRM e che l’utente UtenteCrmInfo con password p@ssw0rd abbia il diritto di accedere al CRM):

 

<execsql>

<connection>DBCRM</connection>

<user>utenteCrmInfo</user>

<password>p@ssw0rd</password>

<sqlcommandid>11</sqlcommandid>

<parameters>

<parameter id=”stato ordine”>35</parameter>

</parameters>

</execsql>

 

Il risultato della chiamata alla pagina GetCrmInfo.aspx sarà, ad esempio, l’XML seguente:

 

<execsql>

<results records="129">

<record id="1">

<field name="N. Ordine">OPT_D393DB52-7F6A-4E8D-A812-2F</field>

<field name="Agente">Ciccone</field>

<field name="Rag. Soc.">GALVAN GIACOMO</field>

<field name="provenienza">AFFISSIONE</field>

<field name="dataordine">31/10/2008</field>

</record>

<record id="2">

<field name="N. Ordine">OPT_1A7DF319-8875-4225-A4CF-0B</field>

<field name="Agente">CIR</field>

<field name="Rag. Soc.">STOLFI FRANCESCO</field>

<field name="provenienza">AFFISSIONE</field>

<field name="dataordine">31/10/2008</field>

</record>

...

...

...

<record id="129">

<field name="N. Ordine">OPT_D920963A-6B2F-43E5-91E3-6A</field>

<field name="Agente">VIGO ELENA                   T</field>

<field name="Rag. Soc.">ASCHERI SILVIA</field>

<field name="provenienza">AFFISSIONE</field>

<field name="dataordine">31/10/2008</field>

</record>

</results>

</execsql>

 

FLUSSO WEB PER FARE PIVOT IN EXCEL

Utilizzando la gestione dei comandi schedulati (si trova nel menù Utilità / Comandi personalizzati e Schedulazioni del tool Client/Server) è possibile anche creare dei particolari flussi dati che possono essere utilizzati come sorgente diretta di informazioni per un foglio XLS (dalla versione Office 2003).

Questo consente di visualizzare e manipolare direttamente dal WEB le informazioni del CRM mediante il client in assoluto più semplice, completo e conosciuto, ovvero Microsoft Excel.

Utilizzando questi flussi dati dal Web è possibile salvarsi un file Excel* sul desktop che punta direttamente all'URL della Pagina GetCrmInfo.Aspx del CRM.

Sarà sufficiente aprirlo per ottenere i dati aggiornati e quindi effettuare ordinamenti, operazioni di PIVOTING, grafici, raggruppamenti ed altre analisi in modo semplice ed economico.

*La licenza di Microsoft Excel è esclusa dalla licenza del CRM

 

Per creare un comando personalizzato di questo tipo è molto semplice.

Ecco un esempio (supponiamo abbia IDComando = 272)

SELECT  ORDINI.IDORDINE, TIPI_ORDINI.DESCRIZIONE, ORDINI.ANNOORDINE, ORDINI.NUMEROORDINE, ORDINI.REVISIONE, ORDINI.DATAORDINE,  ORDINI.CLIENTE, ORDINI.TEL1, ORDINI.TOT, ORDINI.OGGETTOTRATTATIVA,  (SELECT (CODICEAGENTE + ' - ' + COGNOME) AS AGENTE FROM AGENTI WHERE IDAGENTE = ORDINI.IDAGENTE) AS AGENTE,  (DBO.EXTRACTDATE(DATAAPPTO) + DBO.EXTRACTTIME(ORAAPPTO)) AS APPUNTAMENTO , STATI.DESCRIZIONESTATO AS STATO, ORDINI.PERIODOCHIUSURA,ORDINI.PERCENTUALECHIUSURA FROM ORDINI INNER JOIN STATI ON ORDINI.STATO = STATI.IDSTATO  INNER JOIN TIPI_ORDINI ON TIPI_ORDINI.IDTIPOORDINE=ORDINI.IDTIPO  WHERE [[FILTROVISIBILITAORDINI]] ORDER BY IDORDINE DESC

 

In questi comandi che dovranno essere utilizzati in modalità connessa a Microsoft Excel si consiglia di EVITARE i campi NOTE (campi di tipo TEXT), così da limitare l'utilizzo di banda nel passaggio dati ed ottimizzare la velocità di aggiornamento tra XLS e CRM.

 

Per utilizzare il flusso da Excel:

1) lanciare Microsoft Excel ed andare nella pagina ribbon "DATI"

2) Premere il tasto "Carica dati esterni - Da Testo"

3) come indirizzo inserire l'URL del CRM seguito da GetCrmInfo.aspx e dalla sintassi XML già su introdotta:

Esempio:

http://urlcrm/crm/getcrminfo.aspx?params=<execsql><connection>TEST</connection>

<user>ADMIN</user><password>12345Aa!</password><sqlcommandid>272</sqlcommandid>

<format>CSV</format></execsql>

 

Premendo Aggiorna si ottengono in ogni momento le informazioni aggiornate direttamente dal CRM attraverso una semplice connessione Web (su protocollo Http:80).

 

In alternativa è possibile utilizzare il file xlsM (richiede l'abilitazione delle MACRO per poter lavorare correttamente) che viene fornito come esempio insieme al CRM, che si presenta come segue:

 

 

MEGABIBLOS: DOWNLOAD DOCUMENTI TRAMITE SERVIZI WEB

Il servizio Web GETCRMINFO.aspx consente di scaricare dal CRM i documenti presenti all'interno dell'archivio Megabiblos. E' così possibile ottenere un file archiviato nel CRM con una semplice chiamata HTTP, utilizzando delle credenziali di accesso che abbiano il permesso di visualizzare il documento richiesto.

Per farlo è sufficiente conoscere preventivamente il Codice del documento, ricavabile in modo semplice dalla finestra "Proprietà del documento" all'interno della gestione Megabiblos oppure dal campo Documenti.CodiceDoc.

 

Solitamente viene fatta prima una chiamata a GETCRMINFO per sapere la lista dei documenti da scaricare (con relativo "Codice") e successivamente una chiamata per ognuno di essi.

La chiamata Web segue lo standard già illustrato ma con il parametro <megabiblosid> valorizzato.

Vediamo un esempio:

http://serverCRM/urlCRM/getcrminfo.aspx?params=<execsql>

<connection>CONNESSIONE</connection><user>ADMIN</user>

<password>12345</password><megabiblosid>362</megabiblosid></execsql>