Sharepoint Server 2016: Creare un Content Source basato su Business Data Connectivity Services

Utilizzando la Search Service Application in SharePoint è possibile indicizzare diverse tipologie di dati. Gli approcci sono spesso specifici per tipologia e basati sulle singole esigenze. Come fare se ciò che dobbiamo indicizzare persiste esclusivamente su DB?

In questa guida vedremo come creare un content source relativo a dati contenuti in una tabella (o una vista) SQL Server, utilizzando Business Data Connectivity Service e Secure Store Service.

Prerequisiti:

  • SharePoint 2016
  • Business Data Connectivity Service Application
  • Secure Store Service Application
  • Search Service Application
  • SQL Server
  • SharePoint Designer 2013

 

Secure Store Service Application

Dopo aver aperto la Central Administration Console di SharePoint, clicchiamo su “Manage Service Applications”. Selezioniamo la nostra Secure Store Service Application e clicchiamo, nella ribbon bar, sul pulsante “Manage”:

Figura 1: Central Administration Console – Service Applications

Generiamo una nuova chiave cliccando su “Generate New Key”:

Figura 2: Secure Store Service Application

Inseriamo una pass phrase e clicchiamo su OK.

Figura 3: Secure Store Service Application – Nuova Chiave

L’obbiettivo è indicizzare il contenuto della tabella SQL “Utenti” senza lavorare direttamente su SQL Server. La tabella è la seguente:

Figura 4: SQL Server Management Studio – Tabella

Per fare ciò clicchiamo su “NEW” e seguiamo il wizard per la creazione di una nuova Secure Store Target Application.

Figura 5: Secure Store Service Target Application

Clicchiamo su Next per continuare.

In questa fase possiamo scegliere di configurare le modalità di visualizzazione dei campi Username e Password. Questa configurazione non potrà essere modificata successivamente quindi è necessario prestare attenzione. Lasciando tutto di default la password sarà mascherata come da standard. Clicchiamo su Next per continuare.

Figura 6: Secure Store Service Target Application

Configuriamo l’amministratore (o gli amministratori) della Target Application ed i membri che potranno utilizzarla.

Figura 7: Secure Store Service Target Application

Figura 8: Secure Store Service Target Application – Gestione Utenti

Cliccando su OK terminiamo la prima configurazione.

Figura 9: Secure Store Service Target Application

Selezioniamo l’applicazione appena creata e clicchiamo sul pulsante Set:

Figura 10: Secure Store Service Target Application

Configuriamo le credenziali che verranno utilizzate dal gruppo configurato.

Figura 11: Secure Store Service Target Application – Credenziali

Clicchiamo su OK per confermare.

Business Data Connectivity Service Application

Con lo strumento SharePoint Designer 2013 colleghiamoci alla farm e clicchiamo su “Tipi di contenuto esterno”:

Figura 12: SharePoint Designer – Menu

Clicchiamo sull’omonimo pulsante nella ribbon bar “Tipi di contenuto esterno”.

Figura 13: SharePoint Designer – Creazione External Content Type

Inseriamo un nome e configuriamo il Sistema esterno collegato a questo elenco:

Figura 14: SharePoint Designer – Configurazione External Content Type

Clicchiamo su “Aggiungi connessione” configurare la connessione al nostro DB.

Figura 15: SharePoint Designer – Configurazione Connessione

Selezioniamo SQL Server e clicchiamo OK

Figura 16: SharePoint Designer – Selezione Fonte Dati

Configuriamo la connessione inserendo i dati relativi. Per poter utilizzare la secure target application creata in precedenza utilizziamo la configurazione “Connetti con identità di Windows rappresentata”.

Nel mio caso:

Figura 17: SharePoint Designer – Configurazione Fonte Dati

Clicchiamo su OK per confermare.

Dopo aver inserito le credenziali richieste la connessione viene effettuata.

Figura 18: SharePoint Designer – Selezione Tabella

Selezioniamo la tabella desiderata, clicchiamo con il tasto destro del mouse e selezioniamo “Crea tutte le operazioni“.

Figura 19: SharePoint Designer – Selezione Operazioni di CRUD

Con questa configurazione potremmo effettuare tutte le operazioni di CRUD operando solo sulla lista. Le modifiche verranno riportate sulla tabella direttamente da SharePoint.

Seguendo il wizard ottengo un errore: la tabella non ha chiavi primarie.

Figura 20: SharePoint Designer – Configurazioni Parametri Operazioni

Selezioniamo il campo ID in modo da poter configurare il mapping a identificatore e forzare questa configurazione sulla lista.

Figura 21: SharePoint Designer – Configurazioni Parametri Operazioni

Clicchiamo su Fine.

Per salvare la configurazione effettuata, clicchiamo sul tab DBUtenti con il tasto destro, successivamente su Salva.

Figura 22: SharePoint Designer – Configurazione Connessione

Clicchiamo con il tasto destro sul nuovo Tipo di contenuto esterno creato e selezioniamo Elenco esterno:

Figura 23: SharePoint Designer – Creazione Elenco Esterno

Inseriamo un nome ed eventualmente una descrizione

Figura 24: SharePoint Designer – Configurazione Elenco Esterno

Clicchiamo su OK per terminare.

La lista è stata creata, non ci resta che cliccare sulla URL per verificarne il funzionamento.

Figura 25: SharePoint Designer – Configurazione Elenco Esterno

Il risultato sarà il seguente:

Figura 26: SharePoint – Lista

Assicuriamoci di essere loggati per non incappare nell’errore “Permission Denied”.

Da questo momento è possibile utilizzare questa lista con tutti gli strumenti messi a disposizione da SharePoint.

Figura 27: SharePoint – Dettaglio Elemento Lista

Search Service Application

Apriamo la Search Administration console e clicchiamo su “Content Sources“.

Creiamo un nuovo Content Source che punta alla nuova lista:

Figura 28: Search Service Application – Creazione Content Source

Clicchiamo su OK per confermare.

Figura 29: Search Service Application – Elenco Content Source

Lanciamo il comando Full Crawl per eseguire l’indicizzazione cliccando su “Start Full Crawl“:

Figura 30: Search Service Application – Full Crawl

Terminata l’operazione dobbiamo creare un mapping tra i titoli delle colonne della tabella e delle managed properties ricercabili. Dobbiamo creare tre variabili per mappare:

  • Nome;
  • Cognome;
  • Città.

Per fare ciò, clicchiamo su Search Schema

Figura 31: Search Service Application – Menu

Successivamente su “New Managed Property“:

Figura 32: Search Service Application – Search Schema

Compiliamo il campo Property name, nel mio caso “nome” ed abilitiamo i flag Searchable, Queryable e Retrivable

Figura 33: Search Service Application – Creazione Managed Property

Figura 34: Search Service Application – Configurazione Managed Property

Scorrendo verso il basso, clicchiamo su Add a Mapping

Selezioniamo il filtro “Business Data” e cerchiamo “nome”, ovvero il titolo della specifica colonna della tabella e clicchiamo su Find.

Figura 35: Search Service Application – Configurazione Mapping

Clicchiamo su OK per confermare il mapping e nuovamente su OK per completare la creazione della nuova managed property.

Ripetiamo l’operazione creando “cognome” e “città”.

Il risultato atteso è il seguente:

Figura 36: Search Service Application – Elenco Managed Properties 1

Figura 37: Search Service Application – Elenco Managed Properties 2

Rilanciamo nuovamente l’azione di full crawl ed attendiamo il termine dell’operazione.

Per interpretare meglio i risultati, utilizziamo lo SharePoint Search Query Tool disponibile al link https://github.com/SharePoint/PnP-Tools/tree/master/Solutions/SharePoint.Search.QueryTool

Una volta eseguito il programma, nel campo “Query Text” cerchiamo, ad esempio, Scarlet ed inseriamo tra le Selected Properties le managed properties configurate in precedenza “nome, cognome, città”:

Figura 38: Search Service Application – Search Query Tool – Chiamata API

Tra i Primary Results saranno visibili le colonne della nostra tabella.

Come ulteriore test, effettuiamo una chiamata alle API utilizzando il browser e puntando alla seguente URL:

http://localhost/_api/search/query?querytext=’scarlet’&selectproperties=’nome%2c+cognome%2c+città’&clienttype=’ContentSearchRegular’

Figura 39: Search Service Application – Chiamata API

Conclusioni

Indicizzare una fonte dati esterna è spesso un’operazione problematica, soprattutto in grandi infrastrutture. Il metodo descritto in questa guida è molto comodo quando la base dati è gestita da altri gruppi di lavoro e, di conseguenza, non si hanno (o non si devono avere!) responsabilità sui contenuti.

Questo è solo un tipo di approccio: Microsoft ha reso la Search Service Application molto versatile ed estremamente personalizzabile!