un crm dentro un cms v1.0

6
Antonio Musarra's Blog The ideal solution for a problem Blog: http://musarra.wordpress.com Mail: [email protected] 23/09/12 Document Revision: 1.0 1 This document is issued with license Creative Commons AttributionNonCommercialShareAlike Un CRM dentro un CMS Certamente il titolo dell’articolo può sembrare un po’ bizzarro ma non ho trovato titolo migliore. Avrei potuto dare un titolo del tipo “Integrazione tra CRM….” che a mio avviso per il tipo di soluzione descritta nel corso di quest’articolo, non si configura una vera integrazione. Inizierei specificando meglio i soggetti del titolo attribuendogli un nome. I protagonisti sono, SugarCRM che implementa per l’appunto un sistema di Customer Relationship Management (abbreviato in CRM) e Liferay che invece implementa un sistema di Content Management System (abbreviato in CMS). Stiamo attraversando una fase dov’è richiesta sempre di più l’integrazione tra i più disparati sistemi informativi che coprono responsabilità diverse, è come fare un puzzle, unire insiemi pezzi diversi in modo tale che la loro collaborazione consenta di raggiugere l’obiettivo, cercando di mantenere un’interfaccia unica per interagire con l’intero o parti del puzzle. Nel corso di queste poche righe vedremo quindi come sia possibile e semplice mettere SugarCRM proprio “dentro” Liferay. Ipotizzando uno scenario dove Liferay implementa un portale operativo da cui è possibile accedere a informazioni e procedure di un’ipotetica azienda, non sarebbe una cosa fuori dal comune, consentire l’accesso al CRM direttamente dal portale senza essere obbligati a dover aprire una nuova finestra del browser evitando anche la ripetizione dell’autenticazione. Raggiungere l’obiettivo è davvero semplice con Liferay, non sono richiesti sviluppi ma solamente attività di configurazione dell’iFrame Portlet, già disponibile di serie con Liferay. Quanto mostrato nel corso della trattazione è applicabile sia all’edizione Community sia all’edizione Enterprise di Liferay, la versione utilizza per quest’occasione è una 6.1 GA2 CE. 1. Requisiti Affinché la soluzione del “dentro” sia applicabile, è indispensabile che i seguenti requisiti siano soddisfatti: Accesso al portale Liferay con un livello d’accesso di tipo amministrativo o con un ruolo tale da consentire l’aggiunta di applicazioni (portlet) e la possibilità di configurazione delle stesse; Possibilità di esecuzione di attività di tipo sistemistico, tipo operazioni di start, stop e modifica delle configurazioni; URL dell’istanza di SugarCRM.

Upload: antonio-musarra

Post on 18-Dec-2014

639 views

Category:

Technology


2 download

DESCRIPTION

Nel corso di queste poche righe vedremo quindi come sia possibile e semplice mettere SugarCRM proprio “dentro” Liferay. Ipotizzando uno scenario dove Liferay implementa un portale operativo da cui è possibile accedere a informazioni e procedure di un’ipotetica azienda, non sarebbe una cosa fuori dal comune, consentire l’accesso al CRM direttamente dal portale senza essere obbligati a dover aprire una nuova finestra del browser evitando anche la ripetizione dell’autenticazione.

TRANSCRIPT

Page 1: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   1  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

Un  CRM  dentro  un  CMS  Certamente   il   titolo  dell’articolo  può  sembrare  un  po’  bizzarro  ma  non  ho  

trovato   titolo   migliore.   Avrei   potuto   dare   un   titolo   del   tipo   “Integrazione   tra  CRM….”   che   a   mio   avviso   per   il   tipo   di   soluzione   descritta   nel   corso   di  quest’articolo,  non  si  configura  una  vera  integrazione.        

Inizierei  specificando  meglio  i  soggetti  del  titolo  attribuendogli  un  nome.  I  protagonisti   sono,   SugarCRM   che   implementa   per   l’appunto   un   sistema   di  Customer   Relationship   Management   (abbreviato   in   CRM)   e   Liferay   che   invece  implementa  un  sistema  di  Content  Management  System  (abbreviato  in  CMS).  

 Stiamo  attraversando  una  fase  dov’è  richiesta  sempre  di  più  l’integrazione  

tra  i  più  disparati  sistemi  informativi  che  coprono  responsabilità  diverse,  è  come  fare  un  puzzle,  unire  insiemi  pezzi  diversi  in  modo  tale  che  la  loro  collaborazione  consenta   di   raggiugere   l’obiettivo,   cercando   di   mantenere   un’interfaccia   unica  per  interagire  con  l’intero  o  parti  del  puzzle.    

 Nel   corso   di   queste   poche   righe   vedremo   quindi   come   sia   possibile   e  

semplice  mettere   SugarCRM  proprio   “dentro”  Liferay.   Ipotizzando   uno   scenario  dove   Liferay   implementa   un   portale   operativo   da   cui   è   possibile   accedere   a  informazioni  e  procedure  di  un’ipotetica  azienda,  non  sarebbe  una  cosa  fuori  dal  comune,   consentire   l’accesso   al   CRM   direttamente   dal   portale   senza   essere  obbligati   a   dover   aprire   una   nuova   finestra   del   browser   evitando   anche   la  ripetizione  dell’autenticazione.  

 Raggiungere   l’obiettivo  è  davvero  semplice  con  Liferay,  non  sono  richiesti  

sviluppi   ma   solamente   attività   di   configurazione   dell’iFrame   Portlet,   già  disponibile   di   serie   con   Liferay.   Quanto  mostrato   nel   corso   della   trattazione   è  applicabile   sia   all’edizione   Community   sia   all’edizione   Enterprise   di   Liferay,   la  versione  utilizza  per  quest’occasione  è  una  6.1  GA2  CE.    

1. Requisiti  Affinché   la   soluzione   del   “dentro”   sia   applicabile,   è   indispensabile   che   i  

seguenti  requisiti  siano  soddisfatti:    

• Accesso   al   portale   Liferay   con   un   livello   d’accesso   di   tipo  amministrativo   o   con   un   ruolo   tale   da   consentire   l’aggiunta   di  applicazioni  (portlet)  e  la  possibilità  di  configurazione  delle  stesse;  

• Possibilità   di   esecuzione   di   attività   di   tipo   sistemistico,   tipo  operazioni  di  start,  stop  e  modifica  delle  configurazioni;  

• URL  dell’istanza  di  SugarCRM.    

Page 2: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   2  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

2. Funzionamento  Ogni  utente  del  portale,  quindi  autenticato,  potrà  accedere  direttamente  dal  

portale  alla  propria  area  di  lavoro  del  CRM  senza  spostarsi  di  “browser”,  evitando  per   altro   di   ripetere   la   procedura   d’autenticazione.   Come   introdotto   in  precedenza,  questa  possibilità  è  offerta  dall’iFrame  Portlet.  

 L’iFrame  Portlet  permette  di  inserire  un'altra  pagina  HTML  all'interno  della  

pagina   che   ospita   la   portlet.   Inoltre,   l'utente   può  navigare   attraverso   la   pagina  “nascosta”  senza  perdere  il  contesto  della  pagina  del  portale.  

 L’iFrame  Portlet  utilizza   il   tag  HTML   iframe   introdotto  dalla  versione  4  di  

HTML,  ed  è  supportata  in  tutti  i  principali  browser.  L’iFrame  Portlet  consente  di  regolare  la  dimensione  della  pagina  HTML  e  svariati  altri  attributi.  

 Una   caratteristica   importante   di   questa   portlet   e   fondamentale   in   questo  

scenario  è   la  possibilità  di  poter  eseguire   il  processo  di  autenticazione  al  posto  nostro.  Sono  supportati  due  tipi  di  autenticazione:  Basic  e  Form,  noi  faremo  uso  del   secondo   metodo,   comunque,   la   scelta   dipende   dal   tipo   di   autenticazione  supportata  dall’applicazione  web  da  integrare.  

 Avrete  già  intuito  che  un  requisito  indispensabile  affinché  l’autenticazione  

sia  trasparente  consiste  nell’asserzione  che  sia  username  (solitamente  l’attributo  screen  name)   sia  password   dell’utente  del  portale   coincida   con   le   rispettive  del  CRM.    

3. Configurazione  Aggiunta   la   portlet   su   una   vostra   pagina,   non   resta   che   procedere   con   la  

configurazione  i  cui  parametri  principali  e  valori  sono  i  seguenti:    

• URL  dell’istanza  di  SugarCRM  a  cui  volete  dare  l’accesso;  • Tipo  di  autenticazione  

o Tipo:  Form  o Method:  POST  

• Username  o FieldName:  user_name  o Value:  @screen_name@  

• Password:  o FieldName:  user_password  o Value:  @password@  

• Variabili  Hidden  o module=Users;action=Authenticate  

 I   valori   indicati   come   @screen_name@   e   @password@   saranno   poi  

sostituiti  a  runtime  con  i  valori  reali  e  in  seguito  inviati  a  SugarCRM  nel  processo  d’autenticazione,   ecco   il   motivo   per   cui   è   necessario   che   le   credenziali  

Page 3: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   3  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

coincidano;   in   caso   contrario   sarete   necessariamente   obbligati   a   eseguire  manualmente   l’autenticazione   tramite   la   form   di   SugarCRM.   In   Figura   1   è  mostrata  la  configurazione  dell’iFrame  portlet.  L’URL  specificato  fa  riferimento  a  un’istanza  di  SugarCRM  CE  6.5  ospitata  sul  cloud  Open  Shift.      

 Figura  1  Configurazione  iFrame  Portlet  per  SugarCRM.  

Esiste   un   meccanismo   di   sicurezza   di   Liferay   tale   per   cui   le   vostre  credenziali  non  sono  memorizzate  (in  sessione,  cookie,  etc…)  per   impostazione  predefinita,   inoltre   è  possibile   fare   in  modo   che   i   soli   utenti   appartenenti   a  un  determinato  ruolo  possano  inviare  la  propria  password  a  sistemi  esterni  tramite  l’iFrame  portlet.    

Page 4: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   4  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

 Figura  2  Creazione  del  ruolo  per  l’autenticazione  trasperente.  

Tramite   delle   properties   di   configurazione   è   possibile   abilitare   la  memorizzazione   della   password   (in   chiaro)   in   sessione   e   specificare   inoltre   il  ruolo  da  assegnare  agli  utenti   che  devono  avere   la  possibilità  di   trasmettere   la  password  all’esterno  tramite  la  portlet  iFrame.     public static String getPassword( PortletRequest portletRequest, String password) throws PortalException, SystemException { if (!isPasswordTokenEnabled(portletRequest)) { return StringPool.BLANK; } if (Validator.isNull(password) || password.equals("@password@")) { password = PortalUtil.getUserPassword(portletRequest); if (password == null) { password = StringPool.BLANK; } } return password; }  Listato  1  Get  della  password  dalla  sessione.  

Il   Listato   2   mostra   il   metodo   getPassword()   della   classe   IFrameUtil   del  package   com.liferay.portlet.iframe.util   che   recupera   la   password   utente   dalla  

Page 5: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   5  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

sessione  effettuando  prima  un  controllo  dell’associazione  ruolo/utente  tramite  il  metodo  isPasswordTokenEnabled().  

 

 Figura  3  Associazione  del  ruolo  all’utente.  

  ## ## IFrame Portlet ## # # Specify a role name that a user must be associated with in order to # configure the IFrame portlet to use the @password@ token. This token is # used to post the password of users who access this portlet in order to # automatically login to the framed site. # # No role is required by default. However, it is recommended that you # specify a role in high security environments where users who configure # this portlet may attempt password theft. See LPS-5272 for more # information. # iframe.password.token.role=iFrameUserToken ## ## Session ## # # Set this to true to store the user's password in the session. # session.store.password=true  Listato  2  Configurazione  file  di  properties  portal-­‐ext.properties  

La  configurazione  mostra  il  ruolo  (di  un  nome  a  vostra  scelta)  cui  gli  utenti  devono   appartenere   e   l’esplicita   istruzione   di   memorizzare   in   sessione   la  

Page 6: Un CRM dentro un CMS v1.0

Antonio  Musarra's  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com  

Mail:  [email protected]  

 

23/09/12  -­‐  Document  Revision:  1.0   6  This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike  

 

 

password   dell’utente.   L’applicazione   di   questa   configurazione   richiede  l’operazione  di  riavvio  del  portale.  

 A   portale   riavviato   e   portlet   configurata   in   precedenza,   basterà   accedere  

con  le  vostre  credenziali  per  avere  la  vostra  area  di  lavoro  CRM  pronta  all’uso.    

 Figura  4  Il  CRM  dentro  il  CMS.  

4. Conclusioni  In   questo   breve   articolo   abbiamo   visto   come   sia   semplice   integrare  

SugarCRM   “dentro”   Liferay   sfruttando   la   potenzialità   messa   a   disposizione  dall’iFrame  portlet.  E’  senz’altro  comodo  poter  eseguire  l’autenticazione  in  modo  trasparente.  Questa  soluzione  può  essere  adottata  per  integrare  qualunque  tipo  di  applicazione  web.