Salta ai contenuti

Steve Trucking, cosa progetterei io

Disponibile anche in 28 lingue

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A row of plain white delivery trucks ready at the loading doors at first light, a clipboard on the front of the nearest one.
Immagine generata con l'IA

Modulo 6 di 6 del capitolo Dati master e identità, capitolo 6 del corso Data Architect, e la fine della Parte 1. Precedente: Quando l’autorità è condivisa · Successivo: la Parte 2 comincia con Progettare per la scala (coming soon)

La domanda a cui risponde questo checkpoint: Sai mettere insieme la Parte 1 su uno scenario reale?

Prova prima la sfida. Questa è la mia soluzione commentata della sfida del Checkpoint 1. Se non hai ancora disegnato il tuo progetto, fallo prima di continuare a leggere. Il valore sta nel confrontare il tuo ragionamento con il mio, non nel leggere la risposta.

Questo è “Cosa progetterei io”: una possibile soluzione praticabile, non la risposta, con i trade-off dichiarati e le mie posizioni prese. Non abbiamo ancora trattato grandi volumi di dati, progettazione delle query, pattern di integrazione, migrazione o transazioni, ed è voluto: l’architettura si sviluppa man mano che impari di più. Ma la Parte 1 ci dà abbastanza per fissare lo scheletro.

Dal brief: circa 3.300 consegne per giorno lavorativo, un milione all’anno, in crescita del 30% l’anno. Circa 1,6 voci per consegna (1,6 milioni all’anno); circa otto cambi di stato per consegna (8 milioni all’anno); da quattro a cinque milioni di foto all’anno; circa 200.000 letture GPS al giorno; circa 180.000 casi all’anno; tre Partner retail che inviano i manifesti in tre modi diversi; nove centri di distribuzione; 330 camion con squadre di due persone. E Steve Trucking ha già una org Salesforce con Service Cloud, Field Service e un portale per i partner. Conta gli zeri prima di disegnare un solo riquadro. Decideranno diverse cose qui sotto.

Le consegne sono il cuore di tutto, e Field Service fa già il dispatch. Quindi parto dal modello standard di Field Service, come ha fatto la porzione del capitolo 3:

Concetto di businessOggetto SalesforcePerché
Partner retailAccount (tipo di record Retail Partner)Un’azienda con cui Steve Trucking ha un contratto; porta contratti, casi e accesso al portale
Personale del partner (responsabili dei CD, personale dei negozi)ContattoGli utenti del portale devono essere Contatti
Una consegna: un Destinatario, un indirizzo, un ordine del partner, un giornoOrdine di lavoro (Work Order)L’unità di lavoro di Field Service; pianificazione, app mobile e report di servizio vi sono collegati
Ogni articolo o servizio: il frigorifero, l’installazione, il ritiro dell’usatoVoce dell’ordine di lavoro (Work Order Line Item)Suddivide il lavoro, guida checklist e fatturazione
Il tipo di tappa: solo consegna, con installazione, con ritiro dell’usatoTipo di lavoro (Work Type)Imposta durata, competenze e checklist di installazione
La visita pianificata e la sua fascia orariaAppuntamento di servizio (Service Appointment)Ciò che Field Service pianifica e che l’app della squadra mostra
Squadre e camion; aree di dispatch dei CDService Resource, Service Crew, Service TerritoryField Service pianifica una squadra come un’unica risorsa
Richieste dei Destinatari, reclami dei partnerCasoLa console di assistenza, gli entitlement, l’email-to-case
L’elenco del partner per martedì al CD di PhoenixManifest__c (personalizzato)Niente di standard rappresenta l’unità di ricezione, riconciliazione e rielaborazione

Tutto il resto resta standard. Resistere a ulteriori oggetti personalizzati è voluto: la domanda del capitolo 1 era quando un architetto dovrebbe resistere a un altro oggetto, e qui la risposta è “quasi sempre”. La riga d’ordine del partner, per esempio, non è un nuovo oggetto. È l’Ordine di lavoro, identificato dal riferimento del partner.

Checkpoint 1: il nucleo delle consegne Il nucleo fisico del Checkpoint 1 per Steve Trucking. Sul core: un Partner retail, un Account con un tipo di record, invia Manifesti di carico, l'unico oggetto personalizzato, e ogni Consegna è per un solo partner. Un Manifesto di carico elenca le Consegne. Una Consegna è un Ordine di lavoro (Work Order) che porta il Destinatario come campi; viene pianificata come Appuntamenti, Appuntamenti di servizio (Service Appointment), e contiene Articoli della consegna, Voci dell'ordine di lavoro (Work Order Line Item), ognuno descritto da un Tipo di tappa, un Tipo di lavoro (Work Type). Una Squadra, una Service Crew, viene assegnata agli Appuntamenti e lavora in un'Area di dispatch del CD, un Service Territory. Una Richiesta o un Reclamo, un Caso, può riguardare le Consegne. Fuori dal core: i segnali GPS della Squadra vanno nel data warehouse, la Consegna è collegata alle Foto della consegna in un archivio foto, e ogni Appuntamento pubblica il suo Storico degli stati come eventi nel data warehouse. Sotto: guarda alla nave madre: Field Service è il nucleo delle consegne. SUL CORE FUORI DAL CORE invia è per elenca riguarda pianificata come contiene descrive le squadre lavorano in assegnata a invia segnali collegata a pubblica Partner retail Account · tipo di record Manifesto di carico Manifest__c · personalizzato Richiesta o reclamo Case Consegna WorkOrder · campi del Destinatario Articolo della consegna WorkOrderLineItem Appuntamento ServiceAppointment Tipo di tappa WorkType Area di dispatch del CD ServiceTerritory Squadra ServiceCrew Storico degli stati eventi, data warehouse Foto della consegna archivio foto, collegate Segnali GPS data warehouse, per riferimento Guarda alla nave madre: Field Service è il nucleo delle consegne. esattamente uno zero o uno uno o molti zero o molti ricerca © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Cresce dal finale del capitolo 3 (Progetta il modello fisico Salesforce): gli stessi oggetti negli stessi posti, con l’aggiunta della squadra, dell’area di dispatch, del caso e di ciò che il Checkpoint 1 tiene fuori dal core.

La chiave che abbina l’ordine di un partner a una consegna

Sezione intitolata “La chiave che abbina l’ordine di un partner a una consegna ”

Ogni riga del manifesto diventa un Ordine di lavoro, collegato al suo Manifesto. La chiave è la domanda a cui voglio di più una risposta: come sappiamo che questa riga del partner è quella consegna? La mia risposta: un ID esterno sull’Ordine di lavoro costruito dal Partner retail e dal riferimento d’ordine e di consegna del partner stesso (qualcosa come KEYSTONE-PHX-8843119-1), segnato come unico. Un campo per fonte, uno-a-uno. È l’identificatore del partner, non il nostro: la “diversi identificatori per una cosa” del capitolo 2, e il “il partner possiede il proprio riferimento d’ordine” del modulo 1.

Perché conta: i manifesti arrivano con uno o due giorni di anticipo e vengono modificati il giorno stesso. Con quella chiave, ogni manifesto reinviato o modificato fa un upsert invece di creare duplicati. La modifica aggiorna l’Ordine di lavoro, un campo la registra, e una modifica a una consegna già assegnata a un percorso avvisa il coordinatore: la modifica del partner viene applicata, ma segnalata finché il dispatch non la conferma. È anche questo che cambia rispetto al quadro del capitolo 4. Oggi ogni manifesto arriva in RouteDesk, e i coordinatori ridigitano i percorsi in Salesforce e le tappe completate all’indietro. In questo progetto i manifesti arrivano direttamente in Salesforce, con un upsert sulla chiave del partner; RouteDesk viene dismesso, e la ridigitazione finisce. Il capitolo sull’integrazione progetta i tre formati in entrata. La decisione sui dati è la chiave.

Il Destinatario: account personale, Contatto o nessuno dei due?

Sezione intitolata “Il Destinatario: account personale, Contatto o nessuno dei due? ”

È la decisione sui dati più interessante della Parte 1, quindi ecco le opzioni, poi la mia scelta.

Opzione A: account personali. Ogni Destinatario diventa un account personale, collegato a ogni consegna. A favore: standard, funziona in modo naturale con Service Cloud, la messaggistica e la console, riconosce i Destinatari ricorrenti. Contro: circa un milione di nuovi Destinatari all’anno, ciascuno un account personale che occupa circa il doppio dello spazio di un account aziendale (Estimated Record Size by Object Type (opens in a new tab)), quindi entro due anni uno degli oggetti più grandi della org. E i Destinatari non sono clienti di Steve Trucking. Sono clienti di ciascun Partner retail, e Steve Trucking non deve mai mescolare il cliente di un partner con quello di un altro (S2).

Opzione B: Contatti sotto l’account del Partner retail. Contro: un milione di Contatti sotto tre o quattro account è uno squilibrio padre-figlio su scala enorme, ben oltre l’indicazione di Salesforce di circa 10.000 figli per padre (Considerations for Object Relationships (opens in a new tab); Parent-Child Data Skew (opens in a new tab)). È l’opzione da mostrare, e da scartare.

Opzione C: il Destinatario vive sulla consegna. Nome, telefono, email, indirizzo e note di consegna del Destinatario sono campi sull’Ordine di lavoro (i campi dell’indirizzo lì sono già standard), acquisiti dal manifesto. A favore: nessun nuovo oggetto voluminoso; i dati vivono esattamente quanto serve alla consegna; la cancellazione avviene consegna per consegna, secondo i tempi del partner; e l’isolamento tra partner arriva gratis, perché ogni consegna appartiene a un solo partner. Contro: un Destinatario ricorrente non viene riconosciuto come la stessa persona.

È questo l’equilibrio da trovare. Ci sarà mai bisogno di riconoscere più consegne come la stessa persona, nello stesso posto? Di dare a quella persona un accesso? È questa la linea tra un Destinatario che ha bisogno di un record tutto suo e i dati del Destinatario che sono semplicemente dati sulla consegna. E c’è una via di mezzo. Porta l’ID cliente del Partner retail come campo sulla consegna, un Retail Partner Customer ID (ID cliente del Partner retail). Non crea un record Destinatario, ma lega tra loro le consegne che un partner invia per lo stesso cliente, il che è l’inizio di un’esperienza cliente più unificata, e riporta dritto al sistema del Partner retail, dove quel cliente vive davvero. È il loro identificativo, quindi ha senso solo insieme al partner: il cliente 4417 di un partner non ha niente a che fare con quello di un altro.

Secondo il mio giudizio professionale, l’Opzione C è la scelta giusta. Il mancato riconoscimento è accettabile, perfino desiderabile: Steve Trucking non ha alcuna relazione con queste persone oltre la consegna. È di nuovo il modulo 1: il Destinatario è il cliente del partner, e il partner è l’autorità su chi sia. Ed è il capitolo 5: dati personali che finiscono in un solo posto, legati a una sola consegna, sono molto più facili da proteggere, conservare e cancellare. E regge alle forme normali del capitolo 2: i dati del Destinatario sono uno a uno con la consegna, quindi appartengono alla consegna. Un figlio Destinatario separato risparmierebbe qualche valore ripetuto al prezzo di un altro oggetto, un’altra relazione e il suo costo, e l’unico modo in cui risparmierebbe di più sarebbe trattare la stessa persona come una sola tra Partner retail diversi, cosa che non faremo. Quindi la consegna porta con sé il Destinatario, con il Retail Partner Customer ID come via di ritorno al sistema del partner.

Chi è il Destinatario? Tre opzioni per il Destinatario, ognuna con i suoi pro e contro. Opzione A, un account personale per ogni Destinatario: non supera la prova della relazione, perché il Destinatario è il cliente del partner; non supera quella del volume, circa un milione all'anno con il doppio dello spazio di un account aziendale; supera quella dello squilibrio, perché ognuno è un account a sé; non supera quella dell'isolamento dei partner, perché mescola i clienti dei partner; non supera quella della cancellazione, perché sopravvive alla consegna; supera quella del riconoscimento dei ricorrenti. Scartata. Opzione B, Contatti sotto il Partner retail: non supera la prova della relazione, perché non sono personale del partner; non supera quella del volume; non supera quella dello squilibrio, un milione sotto tre o quattro account; supera quella dell'isolamento, sotto l'account di un solo partner; non supera quella della cancellazione; riconosce i ricorrenti all'interno di un partner. Da mostrare e scartare. Opzione C, campi del Destinatario sull'Ordine di lavoro, evidenziata come la scelta del Checkpoint 1: l'unica relazione è la consegna; nessun nuovo oggetto; nessun nuovo padre; un partner per consegna; cancellati secondo il calendario del partner; e un Destinatario ricorrente non viene riconosciuto, e va bene così. Sotto: modella la persona secondo la relazione che hai davvero. A: Account personale scartata PRO Riconosce un Destinatario ricorrente Nessuno squilibrio sul padre: ognuno è un account a sé CONTRO Il cliente del partner, non il nostro Circa 1M all'anno, con il doppio dello spazio Mescola i clienti dei partner (S2) Sopravvive alla consegna B: Contatto sotto il Partner retail: da mostrare e scartare PRO Tenuti sotto un solo partner (S2) Ricorrenti riconosciuti all'interno di un partner CONTRO Non sono personale del partner 1M sotto 3 o 4 account: squilibrio Sopravvive alla consegna C: Sulla consegna campi sull'Ordine di lavoro: la scelta PRO L'unica relazione è la consegna Nessun nuovo oggetto, nessun nuovo padre Un partner per consegna (S2) Cancellati secondo il calendario del partner CONTRO Un Destinatario ricorrente non viene riconosciuto: va bene Modella la persona secondo la relazione che hai davvero. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

John Smith, 123 Main Street, compare nel manifesto di Redrock e in quello di Brightwave. Probabilmente la stessa persona. Steve Trucking dovrebbe unificarli? No, deliberatamente no. Unificare i Destinatari tra Partner retail violerebbe S2: un partner non deve mai vedere i Destinatari di un altro partner, e un’identità unificata è esattamente il ponte da cui passano le fughe di dati. È la posizione di questo capitolo applicata: corrispondi di meno dove mescolare costa caro, e qui mescolare costa carissimo.

Se un Partner retail in futuro volesse il riconoscimento dei Destinatari ricorrenti all’interno delle proprie consegne, sarebbe un lavoro per uno strumento di risoluzione dell’identità, come quello di Data 360, limitato a quel partner: una mappa in stile registry, non un account personale, e mai tra partner diversi. Una mappa di chi è chi non concede la titolarità, e non concede l’accesso.

Il capitolo 3 chiedeva dove dovrebbero risiedere i dati. Qui rispondono gli zeri:

  • Lo stato attuale vive sull’Appuntamento di servizio e sull’Ordine di lavoro. Lo storico dei cambi di stato, circa 8 milioni all’anno e in crescita, non ha bisogno di vivere nella org core. Ogni cambiamento viene pubblicato come evento e conservato nel data warehouse, Snowflake. La org conserva lo stato attuale; lo storico è comunque disponibile per assistenza, operazioni e analisi, solo non nel database operativo.
  • Le foto (da quattro a cinque milioni all’anno, alcune che mostrano persone o l’interno di una casa) vivono fuori dal core, in uno spazio di archiviazione costruito per quel volume, caricate direttamente dall’app della squadra. La org conserva solo ciò che le serve: un piccolo record indice per foto, o solo un conteggio e un flag “foto di installazione richieste complete”. La mia preferenza va all’opzione più leggera: tenere snella la org, e lasciare che l’archivio delle foto possieda il proprio indice e la propria conservazione.
  • Le letture GPS (200.000 al giorno) restano in FleetLink e vanno in Snowflake; alla org serve solo l’ultima posizione per la pagina di tracciamento e la mappa di chi fa dispatch.
  • Gli otto anni di storico di RouteDesk (circa 5 milioni di consegne) vanno nel data warehouse o in un archivio, raggiungibili per i reclami. Cosa entri nella org, se qualcosa entra, è una decisione di migrazione per la Parte 2.
Checkpoint 1: cosa progetterei io Il panorama del Checkpoint 1, cosa progetterei io, con gli stessi posti del panorama attuale del capitolo 4. Le persone a sinistra: 45 coordinatori del dispatch dentro 9 CD dei partner, circa 700 membri delle squadre di consegna su 330 camion, 100 persone dell'assistenza e dell'ufficio, che usano tutte Salesforce; circa 300 utenti dei Partner retail in 3 partner, che usano il portale dei Partner retail; e circa un milione di Destinatari all'anno, che aprono una pagina di tracciamento tramite un link, senza accesso, e chiamano gli operatori dell'assistenza al telefono. Al centro, una org Salesforce negli USA con Field Service, il provider di identità aziendale sopra di essa solo per il personale d'ufficio, e l'email-to-case che porta dentro i casi. I tre Partner retail in basso a destra, Redrock tramite API REST e webhook, Keystone tramite CSV via SFTP e Brightwave tramite EDI attraverso una rete di terzi, inviano i manifesti a un unico livello di integrazione, progettato nella Parte 2, che ne fa l'upsert in Salesforce sulla chiave del partner e rimanda lo stato a ogni partner. A destra: Salesforce invia gli eventi di stato a Snowflake, che conserva lo storico degli stati e le analisi; FleetLink, dove restano i dati GPS grezzi, invia a Salesforce solo l'ultima posizione; Salesforce invia i conteggi delle consegne attraverso l'integrazione all'ERP finanziario, che fattura ai partner e paga le squadre; le foto, da 4 a 5 milioni all'anno, vanno dall'app delle squadre a un archivio foto fuori dal core; e RouteDesk viene dismesso in un archivio dei suoi 8 anni di storico. Salesforce invia il messaggio del giorno prima, con un link, tramite il provider SMS ed email. Sotto: la stessa azienda del capitolo 4; la ridigitazione e il foglio di calcolo sono spariti; lo storico e le foto vivono fuori dal core. SOPRA: IDENTITÀ, APPEXCHANGE, WEB PERSONE DESTRA: SISTEMI INTERNI SOTTO: CANALI DEI CLIENTI IN BASSO A DESTRA: PARTNER E PROVIDER Coordinatori del dispatch 45, dentro 9 CD dei partner Squadre di consegna ~700 su 330 camion Assistenza e personale d'ufficio 100: assistenza, operazioni, finanza Utenti dei Partner retail ~300 in 3 partner Destinatari ~1 milione all'anno IdP aziendale SSO solo per il personale d'ufficio Portale dei Partner retail Pagina di tracciamento INTEGRAZIONE Snowflake storico degli stati, analisi FleetLink il GPS grezzo resta qui ERP finanziario fattura ai partner, paga le squadre Archivio foto 4–5 milioni all'anno, fuori dal core Archivio RouteDesk dismesso; 8 anni di storico Telefono operatori dell'assistenza Email email-to-case Provider SMS ed email messaggio del giorno prima, con un link Redrock API REST, webhook Keystone CSV via SFTP Brightwave EDI tramite una rete di terzi Salesforce Field Service, una org negli USA un link, nessun accesso solo personale d'ufficio chiamate casi in entrata manifesti in entrata stato in uscita manifesti in entrata stato in uscita manifesti in entrata stato in uscita upsert, chiave del partner eventi di stato solo l'ultima posizione conteggi delle consegne conteggi delle consegne foto, dall'app delle squadre giorno prima, con un link Salesforce una community persone identità, app, web un sistema interno un canale dei clienti il livello di integrazione parte dal sistema che apre la connessione; l'etichetta dice cosa si sposta un certificato condiviso: fiducia, nessuna chiamata diretta La stessa azienda del capitolo 4. La ridigitazione e il foglio di calcolo sono spariti; lo storico e le foto vivono fuori dal core. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Checkpoint 1: cosa progetterei io. Gli stessi posti del panorama del capitolo 4 (Il panorama di Steve Trucking), senza più la ridigitazione e il foglio di calcolo.

  • I Partner retail vedono solo le proprie consegne (S2). Ogni Ordine di lavoro porta il suo Partner retail; gli utenti del portale vedono le consegne del proprio partner, e i responsabili dei CD solo quelle del proprio CD.
  • Gli utenti dei partner hanno bisogno di una licenza del portale che supporti regole di condivisione e ruoli: Customer Community Plus o Partner Community. I posti allo stadio del capitolo 3: i posti più economici non hanno la condivisione di cui questo progetto ha bisogno. Entrambe le licenze richiedono ruoli per gli utenti esterni, e Salesforce avverte che più ruoli rallentano la org (Experience Cloud User Licenses (opens in a new tab), in inglese). Un ruolo per partner e per CD va bene; un ruolo per ogni negozio no.

Da sapere per l’esame. Sappi quali licenze esterne prevedono la condivisione standard: Customer Community Plus e Partner Community (con i ruoli per gli utenti esterni), non Customer Community, che usa i set di condivisione.

  • I Destinatari non hanno bisogno di una licenza. La pagina di tracciamento mostra una consegna tramite un link con un token che scade (S3), non un accesso.
  • Attenzione allo squilibrio. Centinaia di migliaia di Ordini di lavoro all’anno che puntano a tre o quattro account di partner sono uno squilibrio dei dati sugli account. Un’opzione è un account figlio per ogni CD sotto ciascun partner, che distribuisce i figli su nove o più padri; archiviare le consegne completate dopo la finestra dei reclami mantiene basso il numero di figli attivi per padre. La Parte 2 affronta il tema.

Non creerei un account personale per ogni Destinatario perché un Destinatario è un individuo. Non appenderei un milione di Contatti a tre account. Non costruirei un oggetto Consegna personalizzato accanto all’Ordine di lavoro di Field Service. Non unificherei i Destinatari tra i partner. Non metterei milioni di foto o di letture GPS nello spazio di archiviazione del core. E non chiamerei golden record un Destinatario unificato a meno di aver davvero preso una decisione di gestione dei dati master.

La Parte 1 ha fissato lo scheletro; la Parte 2 lo mette alla prova. Il righello dei grandi volumi al terzo anno (Ordini di lavoro, Appuntamenti di servizio e voci sono tutti territorio da grandi volumi entro due o tre anni), la progettazione delle query per le viste elenco limitate a un partner, le tre integrazioni in entrata e i tre flussi di stato, la migrazione di RouteDesk, le transazioni del giorno stesso, e il progetto di sicurezza dietro il portale. Anche Steve Trucking cambierà. Tieni questo progetto; ci tornerai.

  • Quali oggetti standard reggono il cuore (qui, quelli di Field Service), e quali oggetti personalizzati sono davvero giustificati (qui, uno).
  • La chiave che abbina la riga d’ordine di ogni partner a una consegna, e perché appartiene al partner.
  • Cos’è il Destinatario, in base alla relazione che Steve Trucking ha davvero con lui.
  • Se unificare le identità, e dove mescolare costa troppo per rischiare.
  • Cosa resta nella org, cosa vive fuori dal core, e da quali licenze dipende il progetto.