Vai al contenuto
All articles
Setup

ERP enterprise: SAP e NetSuite

Guida passo dopo passo per collegare Sellio al tuo SAP (OData) o NetSuite (REST) in modo bidirezionale: invia account, ordini e fatture all'ERP e ricevi eventi in ritorno (fattura pagata, ordine/cliente aggiornato). Modello BYO: l'ERP e le credenziali sono tuoi.

Questa integrazione collega Sellio al tuo ERP enterprise, sia SAP (tramite OData) sia NetSuite (tramite REST Record Service), con sincronizzazione bidirezionale profonda. Completa il connettore generico "ERP / Fatturazione" (che effettua solo un semplice POST verso un endpoint): qui parliamo direttamente con l'API tipizzata di ciascuna piattaforma, con l'autenticazione reale di ciascuna. Modello BYO: l'account e le credenziali sono tuoi; non c'è alcun costo da parte nostra. Tutto parte inattivo: nulla viene inviato o ricevuto finché non configuri e attivi. I segreti vengono memorizzati cifrati e non vengono mai più mostrati.

Cosa succede in ciascuna direzione: sull'INVIO (Sellio → ERP), quando lo attivi (o un'automazione lo attiva) il CRM costruisce il record nel linguaggio dell'ERP (OData EntitySet in SAP; recordType in NetSuite) ed effettua il POST autenticato. Sulla RICEZIONE (ERP → Sellio), il tuo ERP chiama l'URL webhook di Sellio a ogni evento (fattura pagata, ordine aggiornato, cliente aggiornato); Sellio riconcilia un pagamento in sospeso per importo + valuta (quando si tratta di una fattura/ordine pagato) oppure registra un'attività sul Contatto corrispondente. Gli eventi ripetuti vengono deduplicati tramite l'id esterno.

💡 Scegli il percorso in base alla tua piattaforma. Puoi configurare SAP, NetSuite o entrambi. Ognuno ha la propria scheda in Impostazioni → Integrazioni e il proprio URL webhook.

1. Prerequisiti

SAP (S/4HANA Cloud, S/4HANA on-premise tramite SAP Gateway, o SAP BTP): ti serve un servizio OData pubblicato per le entità che sincronizzerai (ad esempio, il servizio standard API_BUSINESS_PARTNER per account/contatti, API_SALES_ORDER_SRV per gli ordini, API_BILLING_DOCUMENT_SRV per le fatture) e una credenziale per chiamarlo. Due opzioni di credenziale: (a) un Communication User con Basic Auth, oppure (b) un client OAuth 2.0 (client credentials) su SAP BTP. Permessi: l'utente/client necessita dell'autorizzazione di creazione (POST) sulle entità OData scelte.

NetSuite (SuiteTalk REST): ti servono le funzionalità "SuiteTalk (SOAP and REST Web Services)" e "Token-Based Authentication" abilitate nel tuo account, e un utente con un Ruolo che abbia i permessi Lists/Records per gli oggetti che sincronizzerai (Customers, Sales Orders, Invoices) e il permesso "REST Web Services" (in Setup). Creerai un Integration Record (Consumer Key/Secret) e un Access Token (Token ID/Secret).

  • Devi essere un amministratore di Sellio (permesso di gestire le impostazioni) per salvare e attivare il connettore.
  • Tieni a portata di mano URL/ID: in SAP, l'URL base del servizio OData; in NetSuite, il tuo Account ID (es. 1234567, oppure 1234567_SB1 per il sandbox).

2. Dal provider (SAP): esponi l'OData e crea la credenziale

  1. Pubblica/attiva il servizio OData dell'entità desiderata. In S/4HANA on-premise, usa la transazione /IWFND/MAINT_SERVICE per aggiungere e attivare il servizio (es. API_BUSINESS_PARTNER); annota l'URL base risultante (qualcosa come https://tuohost:44300/sap/opu/odata/sap/API_BUSINESS_PARTNER). In S/4HANA Cloud, il servizio è già pubblicato, quindi copia il Service URL dal Communication Arrangement corrispondente.
  2. Crea la credenziale di comunicazione. Per Basic Auth: in Communication Management → Maintain Communication Users, crea un Communication User con nome utente e password; poi, in Communication Arrangements, associa quell'utente allo scenario di comunicazione (Communication Scenario) che espone il servizio OData. Per OAuth 2.0 (BTP): crea un'istanza di servizio e annota il Client ID, il Client Secret e il Token URL (endpoint /oauth/token).
  3. Assicurati che l'utente/client abbia il permesso POST (creazione) sulle entità. Testa rapidamente il GET della collezione nel browser/Postman con la stessa credenziale per confermare l'accesso.

2. Dal provider, NetSuite (Integration Record + Access Token TBA)

  1. Abilita le funzionalità: Setup → Company → Enable Features → scheda SuiteCloud → seleziona "SOAP Web Services" e/o "REST Web Services" e "Token-Based Authentication". Salva.
  2. Crea l'Integration Record: Setup → Integration → Manage Integrations → New. Assegna un nome (es. "Sellio CRM"), lascia selezionato "Token-Based Authentication", deseleziona "TBA: Authorization Flow" e "OAuth 2.0" se userai solo TBA, e salva. NetSuite mostra il Consumer Key e il Consumer Secret UNA SOLA VOLTA, quindi copiali entrambi subito (non vengono mostrati di nuovo).
  3. Crea l'Access Token: Setup → Users/Roles → Access Tokens → New. Seleziona l'Application Name (l'Integration Record creato), l'Utente e il Ruolo (un ruolo con i permessi Records + "REST Web Services"). Salva. NetSuite mostra il Token ID e il Token Secret UNA SOLA VOLTA, quindi copiali entrambi subito.
  4. Annota il tuo Account ID: Setup → Company → Company Information (campo "ID account"), es. 1234567 (produzione) o 1234567_SB1 (sandbox).
💡 Conserva il Consumer Key/Secret e il Token ID/Secret in modo sicuro: NetSuite non li mostra una seconda volta. Se li perdi, dovrai generarli di nuovo.

3. In Sellio: incolla le credenziali e attiva

  1. Apri Impostazioni → Integrazioni e trova la scheda "SAP (ERP enterprise)" o "NetSuite (ERP enterprise)".
  2. SAP: in "URL servizio OData", incolla l'URL base del servizio (senza la barra finale e senza il nome dell'EntitySet, poiché Sellio aggiunge automaticamente l'EntitySet corretto). In "Tipo di autenticazione", scegli Basic (e incolla Username + Password) oppure OAuth 2.0 (e incolla token URL + Client ID + Client Secret).
  3. NetSuite: in "ID account", incolla il tuo ID (es. 1234567 o 1234567_SB1). In "Tipo di autenticazione", scegli Token-Based Authentication (TBA) e incolla Consumer Key, Consumer Secret, Token ID e Token Secret. (Se preferisci OAuth 2.0, scegli quell'opzione e incolla l'Access Token.)
  4. Compila il "Segreto webhook" se invierai eventi dell'ERP a Sellio. È OBBLIGATORIO per la ricezione: per sicurezza (gli eventi possono saldare un pagamento), Sellio accetta solo webhook che portano questo secret/firma. Senza di esso, la ricezione viene rifiutata (vedi passo 4). Memorizzato cifrato.
  5. Clicca su "Salva connettore". Le credenziali vengono memorizzate cifrate. Poi clicca su "Attiva". L'invio e la ricezione funzionano solo una volta che il connettore è ATTIVATO.

Per ricevere eventi dall'ERP: dopo aver salvato, usa "Genera URL webhook" e copia l'URL (formato https://app.../api/inbound/erp/IL_TUO_TOKEN). Incolla quell'URL nella destinazione webhook del tuo ERP: in SAP, in un'automazione/middleware (Event Mesh, SAP BTP, o un job che effettua il POST); in NetSuite, in uno User Event Script/RESTlet o uno strumento di automazione (SuiteFlow + script) che effettua il POST dell'evento. Il provider (SAP o NetSuite) viene identificato dal token stesso, quindi non c'è nulla da scegliere nell'URL.

4. Come testare

  1. Con il connettore attivato, clicca su "Invia record di test" sulla scheda. Sellio costruisce un account fittizio (un test di connessione "Sellio CRM") e lo invia al tuo ERP.
  2. Verifica nell'ERP: in SAP, cerca il Business Partner appena creato nell'entità corrispondente; in NetSuite, cerca il nuovo Customer in Lists → Relationships → Customers.
  3. Se appare "Record di test inviato all'ERP", l'autenticazione e l'endpoint sono corretti. Poi, per inviare un record REALE, attiva l'invio dal record del CRM (account, contatto, ordine, opportunità o fattura), e Sellio usa lo stesso percorso.
  4. Per testare la RICEZIONE: genera (o simula) un evento nell'ERP (ad esempio, contrassegna una fattura come pagata) e verifica in Sellio se un pagamento in sospeso dello stesso importo è stato riconciliato, oppure se un'attività è comparsa sul Contatto corrispondente.
💡 L'invio di test NON scrive nulla nel tuo CRM. È solo una chiamata all'ERP per convalidare la connessione. L'invio di record reali recupera il record tramite id, rispettando i tuoi permessi.

5. Risoluzione dei problemi

  • 401 (non autorizzato): credenziali errate o scadute. SAP Basic → controlla username/password del Communication User; SAP OAuth → controlla Client ID/Secret e il token URL; NetSuite TBA → controlla Consumer Key/Secret e Token ID/Secret (un carattere in più/mancante invalida la firma). Incolla di nuovo i segreti (non tornano dal server per motivi di sicurezza).
  • Firma TBA non valida (NetSuite): Token-Based Authentication usa OAuth 1.0a con HMAC-SHA256; la firma dipende dal metodo, dall'URL esatto (inclusi i parametri di query) e dall'Account ID (realm). Conferma che l'Account ID sia corretto (con il suffisso _SB1 nel sandbox) e che i quattro valori (Consumer Key/Secret, Token ID/Secret) siano stati incollati senza spazi. Se hai rigenerato il token in NetSuite, aggiornalo in Sellio.
  • 403 (vietato): la credenziale si autentica, ma il ruolo/utente non ha il permesso di creare quel record. In NetSuite, rivedi i permessi del Ruolo (Lists/Records + "REST Web Services"); in SAP, rivedi l'autorizzazione POST sull'entità OData / il Communication Scenario.
  • Entità/recordType non trovato (404): in SAP, l'URL del servizio OData è errato o il servizio non è attivato. Conferma l'URL base (senza l'EntitySet) e attiva il servizio in /IWFND/MAINT_SERVICE. In NetSuite, il recordType predefinito potrebbe non corrispondere al tuo, e account/ordini/fatture personalizzati potrebbero richiedere un recordType diverso (contatta il supporto per adattare la mappatura).
  • Campi rifiutati: SAP e NetSuite sono rigorosi con i nomi delle proprietà. Sellio invia un set conservativo di campi comuni (name, email, phone, company, amount, currency, reference). Se il tuo ERP richiede campi obbligatori aggiuntivi (es. BP Category in SAP, subsidiary in NetSuite), devono essere mappati, quindi adatta la mappatura nella configurazione o contatta il supporto.
  • Il webhook non arriva (ricezione): conferma che il connettore sia ATTIVATO (un connettore disabilitato risponde 404 al webhook), che l'URL incollato nell'ERP sia completo (con il token) e, se hai impostato un "Segreto webhook", che l'ERP invii il secret nell'header X-Sellio-Secret o l'HMAC-SHA256 del corpo nell'header della firma. Altrimenti la risposta è 401.

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

Crea un account gratuito
ERP enterprise: SAP e NetSuite · Sellio