Un CRM (acronimo di Customer Relationship Management) è un sistema che le aziende utilizzano per avviare, rafforzare e mantenere relazioni con i propri lead e clienti.
L’obiettivo di un CRM è quello di aiutare la gestione della relazione con il cliente lungo tutto il suo ciclo di vita, ovvero da quando è ancora un potenziale cliente fino a quando non diventa un cliente effettivo che ha acquistato un prodotto o un servizio.
Questi strumenti hanno spesso una scheda cliente che mostra in una sola schermata tutta la storia e le informazioni di un contatto o di un’azienda.
Questa singola scheda può contenere informazioni sull’anagrafica, sulle vendite passate, sugli sforzi fatti dal marketing e molto altro, riassumendo tutta la relazione tra l’azienda e il cliente.
Oggi le soluzioni più evolute aiutano ad offrire la miglior customer experience possibile perché sono in grado di gestire non solo i processi di vendita ma anche il marketing e il customer service.
In questo articolo di mostrerò come creare in Oracle APEX un sistema CRM partendo dalla gestione di contatti cliente fino la creazione di opportunità e delle offerte di vendita.
Il mio nome è Daniele Trasarti, autore di APPin5Minuti, il sito italiano che parla di low-code.
Qui troverai tantissimi tutorial e risorse per imparare a sviluppare in Oracle APEX (e non solo) applicazioni belle e professionali.
Seguimi su Linkedin e inscriviti alla Newsletter per ricevere tanti altri contenuti interessanti.
IN QUESTO ARTICOLO
Prima di Iniziare
Per aiutarti nel lavoro ho deciso di dividere il tutorial in due parti.
Nella prima parte ci preoccuperemo prima di tutto di creare le tabelle del database necessarie per gestire i dati del nostro CRM e poi continueremo con la configurazione di base della nostra applicazione.
A patto che tu abbia a disposizione un ambiente di sviluppo Oracle APEX su cui lavorare, una volta completata questa parte avrai creato una applicazione CRM pronta all’uso.
Nella seconda parte ci concentreremo su come rendere ancora più bella e funzionale la nostra applicazione grazie all’uso di alcuni dei componenti più avanzati messi a disposizione da Oracle APEX.
In particolare ti spiegherò come configurare gli Smart Filters, le Faceted Search e come creare una Dashboard.
Fidati, ne varrà la pena.
Però, prima di iniziare a mettere le mani in pasta, vorrei introdurti ad alcuni concetti del CRM perché ti aiuteranno a capire come progettare meglio la tua applicazione.
Concetti Base del CRM
Un software CRM mette a disposizione di chi ne fa uso di un punto in cui è possibile archiviare quante più informazioni possibili relative ai clienti, nonché monitorare le interazioni che l’azienda ha con i clienti stessi.
Se usato a dovere, ogni domanda, richiesta di servizio, preferenza e dato di contatto passato di ciascun cliente è disponibile immediatamente all’interno del CRM, permettendo di avere con il cliente nuove iterazioni sempre personalizzate, pertinenti e aggiornate.
Oltre a tenere traccia di ogni telefonata, e-mail, riunione e presentazione, i sistemi CRM possono essere utilizzati anche per aggiungere note, pianificare i follow-up e organizzare i passi successivi da fare.
Tutto ciò assicura che non vadano sprecate le opportunità di chiudere le trattative o di far crescere gli account dei clienti.
Senza volerci addentrare in questo momento in qualcosa di troppo sofisticato, possiamo dire che ci sono alcuni concetti che è bene siano sempre previsti in un CRM e ne rappresentano, in un certo senso, la colonna portante:
- I contatti dei clienti
- Il listino prodotti e servizi
- Le opportunità e le offerte di vendita
- Le interazioni con i clienti (appuntamenti, visite, telefonate, ecc..)
Tutti questi oggetti dovranno essere gestiti all’interno della nostra applicazione, tenendo conto anche delle relazioni che sussistono tra di loro.
Cerco di farti capire meglio cosa intendo…
Contatti e dei Clienti
Nell’ambito del marketing, l’oggetto di qualsiasi azione e strategia è il cliente, ovvero il soggetto al quale desideriamo vendere i nostri prodotti.
I clienti possono essere sia consumatori singoli (si parla generalmente di B2C – Business to Consumer) piuttosto che altre aziende (in questo caso parliamo di B2B – Business to Business).
Il contatto è una persona che possiamo contattare, di cui abbiamo alcuni informazioni quali l’indirizzo email, il recapito fisico, il numero di telefono, il profilo social ed eventualmente l’azienda per la quale lavora (informazione decisamente utile nel caso in cui ci rivolgiamo ad un mercato B2B).
I contatti non sono tutti uguali: possono essere acquisiti in tanti modi, tramite ad esempio un form di registrazione al nostro sito oppure tramite una campagna di advertising sui canali social e possono mostrare un interesse più o meno alto nei confronti dei nostri prodotti.
Per questo motivo i contatti possono essere classificati in 3 modi: lead, prospect e customer.
- Il lead rappresenta un potenziale cliente o un’opportunità di vendita: non è un generico consumatore, bensì una persona che ha già manifestato interesse che lo ha spinto a fornire alcuni dati di contatto e/o dati personali.
- Il prospect è invece un potenziale cliente che non solo ha manifestato un interesse specifico per un prodotto o servizio ma ha anche chiesto una offerta (quindi la trattiva è stata effettivamente aperta). Nella catena del marketing & sales funnel il prospect rappresenta dunque un anello successivo al lead.
- Il customer è, invece, un cliente che ha effettivamente fatto un acquisto, al quale potremo vendere altri prodotti o servizi.
Devi sapere che questa classificazione dei contatti e dei clienti è importantissima nell’ambito del CRM perché serve per gestire le attività di marketing: le azioni da intraprendere nei confronti di un lead sono per forza di cosa diverse da quelle che devono essere prese nei confronti di un customer.
Ecco un esempio che rappresenta le relazioni tra gli oggetti Contatto e Azienda

Listino Prodotti
I prodotti sono un catalogo di base di tutti gli articoli e i servizi che possono essere venduti e dei relativi prezzi di listino standard.
Durante una trattativa capiterà poi di dover applicare uno sconto (o magari una maggiorazione) per cui il prezzo di una offerta non è detta che sarà quello di listino.
La gestione del pricing può essere qualcosa di molto complesso e dipende fortemente dal modello di business dell’impresa e dai mercati sui quali opera.
Nel nostro esempio ci limiteremo a gestire un singolo prezzo definito a livello di articolo, ma considera che nella realtà potresti avere bisogno di logiche diverse!

Opportunità e Offerte
Come suggerisce il nome, nel gergo del CRM una opportunità rappresenta una trattativa (deal) per la vendita di un prodotto o di un servizio.
Generalmente si usa suddividere una opportunità in fasi (stages) che servono a monitorare il processo di vendita, gestirne l’avanzamento (pipeline) e valorizzare i futuri guadagni (forecast).
L’ultima fase di un opportunità è la chiusura, che può essere vinta (closed won) o persa (closed lost).
Le offerte (o preventivi) rappresentano i prezzi proposti per i prodotti e i servizi dell’azienda.
È possibile creare una offerta da un’opportunità e dai relativi prodotti e ogni opportunità può avere più preventivi associati.
Ad esempio, nella figura sotto riportata, una trattativa per l’acquisto delle licenze di un prodotto software è stata vinta, dopo una trattativa per uno sconto, grazie all’offerta numero 2.

All’interno dell’opportunità andranno gestite, inoltre, tutte le attività, i documenti e le informazioni inerenti alla trattativa, in modo da rendere facile l’accesso alle informazioni in qualunque momento e agevolare future interazioni con il cliente.
Parte 1: Come creare una Applicazione CRM in Oracle APEX
Ora che abbiamo una idea più chiara degli oggetti che andremo a manipolare nel CRM, possiamo iniziare finalmente a sviluppare la nostra applicazione in Oracle APEX.
Non preoccuparti, ti guiderò passo dopo passo e in men che non si dica avrai creato un vero e proprio CRM che potrai utilizzare fin da subito.
Inoltre ti anticipo che ci sarà una piccola sorpresa…
Step 1: installa gli oggetti database
Oracle APEX basa tutto il suo funzionamento sul database Oracle quindi la prima cosa da fare quando è installare nel database gli oggetti (tipicamente tabelle e viste, ma anche procedure PL-SQL) necessarie affinché la nostra applicazione funzioni.
- Accedi all’APP Builder di Oracle APEX e vai in SQL Workshop > SQL Scripts
- Inserisci le seguenti istruzioni SQL che ho preparato per te
-- create tables
create table companies (
id number generated by default on null as identity
constraint companies_id_pk primary key,
name varchar2(4000 char),
url varchar2(4000 char),
logo varchar2(4000 char),
address varchar2(4000 char)
)
;
create table contacts (
id number generated by default on null as identity
constraint contacts_id_pk primary key,
first_name varchar2(250 char),
last_name varchar2(250 char),
title varchar2(250 char),
email varchar2(250 char),
phone varchar2(250 char),
status varchar2(150 char),
company number
constraint contacts_company_fk
references companies on delete cascade
);
-- table index
create index contacts_i1 on contacts (company);
create table products (
id number generated by default on null as identity
constraint products_id_pk primary key,
name varchar2(250 char),
description varchar2(4000 char),
price number
)
;
create table opportunities (
id number generated by default on null as identity
constraint opportunities_id_pk primary key,
company number
constraint opportunities_company_fk
references companies on delete cascade,
contact number
constraint opportunities_contact_fk
references contacts on delete cascade,
name varchar2(250 char),
description varchar2(4000 char),
product number
constraint opportunities_product_fk
references products on delete cascade,
stage varchar2(150 char),
amount number,
owner varchar2(250 char)
);
-- table index
create index opportunities_i1 on opportunities (company);
create index opportunities_i102 on opportunities (contact);
create index opportunities_i113 on opportunities (product);
create table quotes (
id number generated by default on null as identity
constraint quotes_id_pk primary key,
opportunity number
constraint quotes_opportunity_fk
references opportunities on delete cascade,
contact number
constraint quotes_contact_fk
references contacts on delete cascade,
company number
constraint quotes_company_fk
references companies on delete cascade,
product number
constraint quotes_product_fk
references products on delete cascade,
amount number,
offer_date date,
author varchar2(250 char)
)
;
-- table index
create index quotes_i1 on quotes (company);
create index quotes_i182 on quotes (contact);
create index quotes_i193 on quotes (opportunity);
create index quotes_i204 on quotes (product);
create table notes (
id number generated by default on null as identity
constraint notes_id_pk primary key,
opportunity number
constraint notes_opportunity_fk
references opportunities on delete cascade,
contact number
constraint notes_contact_fk
references contacts on delete cascade,
company number
constraint notes_company_fk
references companies on delete cascade,
note varchar2(4000 char),
url varchar2(4000 char),
attachment blob,
note_date date,
author varchar2(250 char)
);
-- table index
create index notes_i1 on notes (company);
create index notes_i262 on notes (contact);
create index notes_i273 on notes (opportunity);
create table activities (
id number generated by default on null as identity
constraint activities_id_pk primary key,
opportunity number
constraint activities_opportunity_fk
references opportunities on delete cascade,
contact number
constraint activities_contact_fk
references contacts on delete cascade,
company number
constraint activities_company_fk
references companies on delete cascade,
activity_date date,
type varchar2(250 char),
author varchar2(250 char)
);
-- table index
create index activities_i1 on activities (company);
create index activities_i332 on activities (contact);
create index activities_i343 on activities (opportunity);
-- views
create or replace view contacts_v as
select contacts.id as id,
contacts.first_name as first_name,
contacts.last_name as last_name,
contacts.title as title,
contacts.email as email,
contacts.phone as phone,
contacts.status as status,
contacts.company as company_id,
(select name from companies where id = contacts.company) company,
first_name || ' ' || last_name full_name
from contacts contacts;
create or replace view quotes_v as
select id,
opportunity,
contact contact_id,
(select first_name ||' '||last_name from contacts where id = contact) contact,
company company_id,
(select name from companies where id = company) company,
product product_id,
(select name from products where id = product) product,
amount,
offer_date,
author
from quotes;
create or replace view opportunities_v as
select id,
company company_id,
(select name from companies where id = company) company,
contact contact_id,
(select first_name ||' '||last_name from contacts where id = contact) contact,
description,
product product_id,
(select name from products where id = product) product,
stage,
amount,
owner,
name
from opportunities;
- Specifica un nome a piacimento nel campo Script Name e premi Run e successivamente Run Now

- Se tutto va a buon fine dovresti vedere qualcosa di simile alla figura sotto dove possiamo apprezzare che la generazione degli oggetti è stata completata senza errori.

- Andremo a creare l’applicazione direttamente dallo script che abbiamo salvato. Clicca sul bottone Create APP.

Step 2: crea una nuova applicazione da uno Script SQL
Arrivati a questo punto dovresti vedere qualcosa di simile alla figura sotto.

Partendo direttamente dallo Script SQL che abbiamo usato per installare le tabelle del database Oracle APEX propone di creare una applicazione con una serie di caratteristiche predefinite, ovvero:
- Una Home Page che potremo andare a personalizzare successivamente
- Un Interactive Report + Form per ogni tabella che abbiamo creato nel database.

Potremmo lasciare tutto così com’è e preoccuparci di configurare la nostra applicazione successivamente.
Tuttavia, preferisco definire già in questa fase la struttura principale della mia applicazione.
A tal proposito lasciamo da parte le tre pagine Contacts, Companies e Opportunities proposte da APEX (io le ho eliminate) e creiamone di nuove.
- Clicca su Add Page

- Seleziona l’opzione Master Detail

- Nella schermata successiva inserisci le seguenti informazioni e poi premi Add Page
- Page Name: Contacts
- Layout Type: Side by Side
- Table: CONTACT
- Primary Display Column: FIRST_NAME
- Secondary Display Column: STATUS
- Detail Table 1: OPPORTUNITIES
- Detail Table 2: QUOTES
- Detail Table 3: NOTES
- Detail Table 4: ACTIVITIES

Ripeti esattamente la stessa procedura per Companies e Opportunities
- Pagina Companies:
- Page Name: Companies
- Layout Type: Side by Side
- Table: COMPANIES
- Primary Display Column: NAME
- Secondary Display Column: URL
- Detail Table 1: OPPORTUNITIES
- Detail Table 2: QUOTES
- Detail Table 3: CONTACTS
- Detail Table 4: NOTES

- Pagina Opportunities:
- Page Name: Opportunities
- Layout Type: Side by Side
- Table: OPPORTUNITIES
- Primary Display Column: NAME
- Secondary Display Column: STAGE
- Detail Table 1: QUOTES
- Detail Table 2: ACTIVITIES
- Detail Table 3: NOTES
- Premi Create Application per completare la procedura.

- Dopo pochi secondi Oracle APEX completerà la creazione dell’applicazione. Clicca Run Application per controllare il risultato.

- Come mostrato nella figura sotto, ritroviamo le voci di menù per la gestione dei prodotti, dei contatti e delle aziende oltre che, ovviamente, alle opportunità e offerte.

L’applicazione è già pronta all’uso. Ad esempio puoi caricare il listino prodotti.
- Seleziona la pagina Products e premi Create per caricare dei prodotti.

- Specifica il nome del prodotto, una descrizione e il prezzo di listino. Clicca su Create per salvare il record nel database.

Diamo una occhiata alla pagina Companies.

A sinistra (box evidenziato in arancione) viene visualizzato un elenco di tutti i record; usando il box di ricerca puoi cercare un record specifico.
Una volta selezionato il record, a destra ne puoi vedere i dettagli come il nome e l’indirizzo.
Avendo creato una pagina di tipo Master Details Side by Side, il sistema ci fa vedere all’interno della stessa schermata tutti gli oggetti correlati.
Sempre da questa schermata possiamo aggiungere nuovi record correlati: ad esempio possiamo inserire una nuovo Contatto Cliente, cliccando sul bottone Add Contact

Stessa cosa anche per le Opportunità e per i Contatti.

Che ne pensi? Non è male…
In pochissimi minuti abbiamo creato qualcosa che normalmente avrebbe richiesto diverse settimane di lavoro.
Nei prossimi paragrafi raffineremo ancora un po’ la nostra applicazione ma ti prometto che non sarà nulla di complicato.
Step 3: configura le liste valori (LOV)
Generalmente per inserire i dati in una form non ci sono solo campi di testo (Text Field) ma anche campi validati da menù a tendina (drop-down list) piuttosto che valori dipendi da altre tabelle.
Per implementare questi campi in Oracle APEX è necessario creare delle Liste Valori (LOV).
- Accedi all’APP Builder e vai in Shared Components > List of Values
- Da questa pagina puoi gestire tutte le Liste Valori dell’applicazione. Ti faccio notare che alcune sono state create automaticamente da Oracle APEX in funzione dei vincoli di integrità referenziale (foreign keys) che abbiamo definito nel database. In particolare sono le seguenti:
- COMPANIES.NAME
- CONTACTS.FIRST_NAME
- OPPORTUNITIES.DESCRIPTION
- PRODUCTS.NAME

- Premi Create per creare una nuova Lista Valori
- Inserisci i seguenti dati e premi Next
- Name: CONTACT_STATUS
- Type: Static

- Inserisci le seguenti opzioni in figura e premi Create List of Values

- Crea nello stesso modo la Lista Valori OPPORTUNITY_STAGES con queste opzioni

- Crea un’altra Lista Valori chiamata ACTIVITY_TYPE con queste opzioni

Nulla ci impedisce di modificare una LOV già esistente:
- Seleziona la Lista Valori CONTACTS.FIRST_NAME
- Modifica il nome della LOV in CONTACTS.FULL_NAME
- Seleziona la vista CONTACTS_V come Origine Dati

- Imposta come Return Value e Display Value rispettivamente le colonne ID e FULL_NAME

Step 4: configura la form Company
Ora ti mostro come configurare le pagine (chiamate Form) che ci consentono di salvare e modificare i dati nel database.
Se hai seguito il tutorial dovresti avere nella tua applicazione diverse pagine di tipo DML Form che servono per salvare i records dei contatti cliente (Contact), delle aziende (Company), delle opportunità (Opportunity), delle offerte (Quote), dei prodotti (Product), delle note (Notes) e delle attività (Activities).
Per individuarle sarà sufficiente inserire un filtro nel APP Builder:

Ti faccio anche notare che potrebbero esserci più forms con lo stesso nome e alias diverso.

Questo perché avendo creato le pagine Master Details usando il wizard, Oracle APEX ha creato ogni volta una form nuova.
Ad esempio, i contatti possono essere creati sia dalla scheda Contacts:

Ma anche dalla scheda Company come oggetto correlato:

La prima pagina che andremo a configurare è quella che ci permette di salvare i dati delle aziende presso le quali lavorano i nostri clienti e che nel nostro esempio si chiama Company.
La form si presenta con quattro campi di tipo Text Area che ci permettono di modificare il nome dell’azienda, il sito web, l’indirizzo e l’URL del logo.

- Accedi all’APP Builder e seleziona la Form Page Company

- Seleziona i tre Page Items indicati in figura a trasformali da Text Area a Text Field

Facendo questo piccolo intervento la Form risulta essere decisamente più compatta

- Aggiungi un nuovo Page Item chiamato PX_DISPLAY_LOGO di tipo Display Image

- Vai nelle proprietà del Page Item e seleziona la seguente opzione
- Based On: Image URL Stored in Page Item Value

- Vai in Source ed imposta
- Type: Item
- Item: PX_LOGO

Inserendo nel campo Logo l’URL ad una immagina valida (io ho usato, ad esempio, un servizio gratuito di clearbit) posso visualizzare il logo dell’azienda

Step 5: configura la form Contact
- Accedi all’APP Builder e seleziona la Page Form Contact
- Configura i Page Items selezionati in figura come Text Field

- Configura il Page Item PX_STATUS come Select List e seleziona la lista valori CONTACT_STATUS che abbiamo creato prima

- Modifica il Page Item PX_COMPANY (che dovrebbe già essere configurato come di tipo Select List) a Popup LOV. In questo modo la ricerca e la selezione di un valore da un elenco potenzialmente molto esteso di records sarà decisamente più semplice per l’utente.
Questo dovrebbe essere il risultato finale

Step 6: configura le forms Quote e Opportunity
Se mi hai seguito fino a questo punto, penso che avrai capito che dovremo fare esattamente le stesse cose anche per le Forms Quote e Opportunity.

Per quel che riguarda la form Quote mi sono limitato a configurare i campi evidenziati come di tipo Popup LOV anziché Select List (poiché ho creato l’APP usando il wizard, le LOV da usare erano già state configurate automaticamente da Oracle APEX)

Stesso discorso anche per la form Opportunity. La sola cosa da tenere a mente è che dovrai configurare il campo Stage come di tipo Select List ed mappare la Lista Valori OPPORTUNITY_STAGES che abbiamo precedentemente creato.

Step 7: configura le forms Note e Activity
Completiamo il lavoro configurando le forms Note e Activity sempre nello stesso modo.
In particolare in quest’ultima puoi utilizzare la Lista Valori ACTIVITY_TYPE per aiutare l’utente a selezionare il tipo di attività corretto

Facciamo una piccola pausa
Posso rubarti 30 secondi?
Allora, cosa ne pensi di questo tutorial?
È troppo complicato? Oppure è troppo semplice?
Lo trovi interessante?
Si, lo so, sembrano domande banali però devi sapere che per me il tuo parere è importante.
Dedico molto del mio tempo a preparare questi contenuti e spero con tutto il cuore che possano aiutarti.
Avere un blog e mantenerlo porta via tanto tempo, per questo la più grande soddisfazione per me è ricevere condivisioni e commenti di critica positiva (e negativa)!
Per questo ti chiedo se puoi condividere l’articolo o commentare l’articolo con la tua opinione al riguardo.
Se hai domande, non esitare a farle!
Intanto, visto che mi hai dedicato il tuo prezioso tempo, ho pensato che fosse carico condividere con te l’applicazione che stiamo creando insieme
Puoi scaricare dal link sottostante l’installer dell’Applicazione CRM.
Troverai sia gli script per gli oggetti database che l’installer vero e proprio dell’applicazione (ho utilizzato Oracle APEX 22.1.2).
Parte 2: Come migliorare la nostra applicazione CRM grazie alle funzionalità di Oracle APEX
Abbiamo completato la prima parte di questo tutorial.
In poco tempo, grazie soprattutto alle procedure guidate messe a disposizione di Oracle APEX, abbiamo realizzato una applicazione completa e funzionante.
Ciò non vuol dire, però, che non possa essere migliorata ed estesa.
Nella seconda parte di questo articolo ti spiegherò come usare alcune funzionalità avanzate che hanno l’obiettivo di migliorare l’esperienza utente.
Per utilizzare il nostro CRM non è necessario che vengano implementate tutte quante.
Se lo desideri puoi dare un occhiata e valutare se alcune di queste fanno al caso tuo.
Come utilizzare gli Smart Filters per trovare le Aziende
Nell’applicazione che abbiamo implementato, per cercare il record specifico di una azienda è necessario inserire una parola chiave nel campo di ricerca e poi cliccare sul record che si vuole visualizzare.

Questo tipo di layout funziona molto bene se l’applicazione che dobbiamo fare è di tipo Desktop (ovvero deve essere utilizzata da un PC).
Forse è poco funzionale quando deve essere utilizzata su un dispositivo mobile, come un tablet o un telefono.
Pertanto, quello che che vorrei fare è creare una pagina di ricerca delle aziende che consenta all’utente di trovare un record usando il nome oppure l’indirizzo web.
Tramite un bottone View Details dovrà poi essere possibile visualizzare i dettagli del record e tutti gli eventuali oggetti collegati.

Decido di usare un Classic Report opportunamente configurato con il template Content Row.
- Dall’APP Builder clicca su Add Page e seleziona l’opzione Smart Filters

- Scelgi come Origine Dati l’opzione SQL Query
select ID,
NAME TITLE,
URL MISC,
ADDRESS DESCRIPTION,
'<img src=' || LOGO || '>' ICON_HTML,
'view_company' actions
from COMPANIES
- Deseleziona i filtri predefiniti proposti e clicca Create Page

- Seleziona il Classic Report che nel mio caso si chiama Search Result

- Seleziona il campo ICON_HTML e imposta la proprietà
- Escape Special Characters=False

- Seleziona il campo Actions e modifica il Type a Link

- Vai alle proprietà Target del link e seleziona la pagina di destinazione che sarà, ad esempio, una pagina di tipo Master Detail (io ne ho creata una manualmente)
- Clicca sul report Companies e in Attributes > Template seleziona il template Content Row
- Clicca Template Options ed imposta le opzioni di visualizzazione come in figura. Quando hai fatto premi OK.

Questa è la visualizzazione da mobile

Come usare le Cards visualizzare la Rubrica Contatti
Il componente Cards è utile quando si vogliono visualizzare i dati di un record in forma compatta e si presta molto bene se vogliamo implementare una rubrica contatti.

- Dall’APP Builder crea una nuova pagina usando sempre il template Smart Filters
- Seleziona come origine dati la vista CONTACTS_V
- Come fatto prima, non includere nessun filtro automatico e seleziona l’opzione Display as Cards

- Scegli uno tra i layout disponibili (io ho scelto Grid) e configura i seguenti attributi
- Title Column: FULL_NAME
- Body Column: EMAIL
- Icon Initials Column: FULL_NAME
- Badge Column: COMPANY

Ecco il risultato

Le potenzialità del componente Cards non si fermano qui. Possiamo impostare delle Actions e personalizzare il contenuto di ogni scheda con del codice HTML.
Leggi questo articolo estratto dal blog ufficiale di Oracle APEX che spiega alcune delle funzionalità più utili di questo componente.
Calendario Appuntamenti
La gestione degli appuntamenti con i clienti è fondamentale per qualsiasi tipo di attività.
Non è quindi un caso che molte delle applicazioni di mercato come i CRM abbiano al proprio interno strumenti di gestione degli appuntamenti.
Per sapere come creare una applicazione per gestire gli appuntamenti in Oracle APEX puoi leggere questo articolo.

Ricerca Opportunità e Faceted Search
Se vi è mai capitato di fare acquisti su Amazon, è probabile che avete utilizzato quella che in gergo si chiama Faceted Search.
Si tratta di una particolare modalità di ricerca che permette all’utente di digitare una semplice richiesta iniziale e successivamente perfezionarne i risultati navigando con filtri di approfondimento successivi (drill-down).
È un tipo di ricerca molto avanzata che classifica i contenuti e rende molto più semplice la navigazione per l’utente, accompagnandolo gradualmente verso la soluzione che sta cercando.
Oracle APEX ha un componente nativo che consente di configurare molto velocemente questo tipo di ricerca e decido di usarla per aiutare l’utente nella ricerca delle opportunità

Il modo più veloce per creare una pagina che sfrutti questo tipo di ricerca è usando il la procedura guidata.
- Dall’APP Builder clicca Create Page e seleziona l’opzione Faceted Search

- Nella schermata successiva seleziona l’Origine Dati

- Nell’ultimo passaggio della procedura guidata Oracle APEX genererà una proposta su come implementare i filtri ottenuta in funzione delle statistiche sui dati.

- Nel mio caso, noto subito il fatto che per il campo Description venga proposto di generare una Checkbox. In effetti sarebbe più opportuno avere un campo di testo. Comunque sia per il momento non me ne preoccupo e completo la procedura premendo il bottone Create Page.
Questo è il risultato:

- Per modificare il tipo di filtro entro nella definizione della pagine e clicco sul Facet che foglio modificare, ad esempio PX_DESCRIPTION

- Cambio il tipo di Faced da Checkbox a Input Field

- Nella sezione Settings posso impostare quale operatore di ricerca usare e se la ricerca è case sensitive oppure no.

Questo è il risultato

Home Page
Completiamo questo tutorial parlando di come configurare l’Home Page della nostra applicazione.
In effetti, se ci pensi, la configurazione della pagina iniziale di una applicazione è senza dubbio un aspetto molto importante perché è il punto di partenza dal quale ogni utente inizia a lavorare.
Nel nostro caso, trattandosi di un sistema CRM, potrebbe essere interessante implementare una dashboard che mostra le opportunità in corso più importanti (in termini di valore) piuttosto che la distribuzione delle stesse in funzione della fase (QUALIFIED, PROSPECTING, QUOTED, ecc..)

Per fortuna Oracle APEX mette a disposizione un ragguardevole set di grafici per creare dashboard belle e funzionali.
Se vuoi approfondire l’argomento ti consiglio di leggere questo articolo dove spiego come creare una dashboard interattiva in Oracle APEX.
Conclusioni
Termino qui questa guida.
Spero di averti dato qualche spunto interessante su come creare da solo il tuo personale CRM.
Ovviamente si potrebbero aggiungere tante altre funzionalità, ma credo che quello che ti ho spiegato sia un buon punto di partenza da cui iniziare.
Fammi sapere cosa ne pensi!
Un abbraccio,
Daniele
Hi Daniele Trasarti, This blog post is a “hidden gem” to all people who are trying to learn Oracle Apex. A huge thanks to you (and Google Translate for translating from Italian to English) for writing this blog post.
Keep up the good work.
Hi Richard
thank you so much for your appreciation.
It means a lot to me.
Daniele
Grazie, Daniele, per questo tutorial davvero esaustivo ma anche molto semplice da capire.
Questa app è diventata un ottimo punto di partenza per imparare Apex 🙂
Grazie Stefania