12

Integration, Customization
& Best Practices

Odoo sebagai Platform Bisnis Terpadu untuk UMKM Indonesia

Minggu 13 Pertemuan Teori 120 menit

Sistem Informasi Enterprise β€” ERP Odoo 19.0 dengan Real UMKM Partner Program

πŸ“‹ Agenda Hari Ini

10'Pre-Test & Refleksi Awal
10'Fondasi: Learning Objectives & Peta Konsep
20'12.1 Built-in Module Integration β€” 5 Integration Flows
15'12.2 Odoo API Fundamentals β€” XML-RPC, REST, CRUD
15'12.3 External Integration β€” Marketplace, Payment, E-Faktur
15'12.4 Odoo Studio β€” Custom Fields, Automated Actions
10'12.5–12.8 Security, Performance, DR & Maintenance
10'Studi Kasus: Batik Nusantara Online
15'Rangkuman, Preview Lab & Penutup
πŸ€”

Mari Uji Pemahaman Awal!

Jawab pertanyaan berikut berdasarkan pengalaman Anda selama Bab 4–11. Tidak ada jawaban salah β€” ini untuk membangun mental model sebelum masuk materi.

Diskusikan 1 menit per pertanyaan
PB-B 1Pre-Test

Saat Anda men-confirm sebuah Sales Order di Odoo, apa yang seharusnya terjadi secara otomatis di modul-modul lain?

Sebutkan minimal 4 downstream effects yang dipicu oleh satu klik "Confirm".

Confirm SO
β†’
???
β†’
???
β†’
???
β†’
???

πŸ’‘ Pikirkan modul: Sales, Inventory, Accounting β€” apa yang terjadi di masing-masing?

PB-B 2Pre-Test

Mengapa UMKM fashion yang jual di Tokopedia, Shopee, dan toko offline bisa mengalami overselling?

Apa akar masalahnya, dan bagaimana API integration bisa menyelesaikannya?

πŸͺ

Toko Offline

Stok Excel A

🟒

Tokopedia

Stok sendiri

🟠

Shopee

Stok sendiri

⚠️ Tiga sumber data stok berbeda = resep overselling. Bagaimana menyatukannya?

PB-B 3Pre-Test

Apa yang dimaksud "prinsip least privilege" dalam manajemen akses sistem?

Berikan contoh penerapannya untuk 3 role berbeda di UMKM: sales staff, warehouse staff, dan accountant.

πŸ›’

Sales Staff

Akses apa saja?

πŸ“¦

Warehouse Staff

Akses apa saja?

πŸ’°

Accountant

Akses apa saja?

🎯 Tujuan Pembelajaran (1/2)

πŸ”
LO 12.1 β€” Integration FlowsC4: Analyze

Menelusuri & memverifikasi aliran data end-to-end antar modul Odoo dan mengidentifikasi titik sinkronisasi data

🧠
LO 12.2 β€” External IntegrationC2: Understand

Menjelaskan konsep integrasi Odoo dengan marketplace, payment gateway, ekspedisi Indonesia dan cara kerjanya via API

πŸ”§
LO 12.3 β€” Odoo Studio CustomizationC3: Apply

Melakukan kustomisasi no-code menggunakan Odoo Studio: custom fields, view modification, automated actions

🎯 Tujuan Pembelajaran (2/2)

πŸ”§
LO 12.4 β€” Security Best PracticesC3: Apply

Mengimplementasikan security measures: 2FA, access rights audit, user management sesuai prinsip least privilege

πŸ’‘
LO 12.5 β€” Documentation & Go-Live PreparationC5: Evaluate

Menyusun dokumentasi sistem komprehensif dan menyelesaikan Pre-Go-Live Checklist dengan minimal 25 item terverifikasi

πŸ“Œ Catatan Penting: Bab 12 adalah integrasi dari semua bab sebelumnya. Lab bersifat verifikasi β€” memastikan semua konfigurasi Bab 4–11 bekerja dan data mengalir antar modul.

πŸ—ΊοΈ Peta Konsep Bab 12

12.1 Built-in Integration
12.2 API Fundamentals
↓   ↓
12 β€” Integration & Best Practices
↓   ↓
12.3 External Integration
12.4 Odoo Studio
↓   ↓
12.5 Security
12.6 Performance
12.7 Disaster Recovery
12.8 Maintenance

πŸ”— Koneksi Antar Bab

Bab 4–11

Konfigurasi modul

β†’

BAB 12

Verifikasi & Integrasi

β†’

Bab 13

Go-Live Execution

Deliverable Bab 12 β†’ Input Bab 13

Deliverable dari Bab 12Diperlukan untuk Bab 13
Integration Verification ReportBukti semua flow sudah berjalan benar
Pre-Go-Live ChecklistKonfirmasi sistem siap transaksi nyata
System Documentation DraftDokumen yang diserahkan ke UMKM mitra
12.1

Built-in Module Integration

Satu Transaksi, Banyak Departemen Terupdate

20 menit

Konsep Data Flow dalam Odoo

πŸ—„οΈ

Single Database

Satu PostgreSQL β€” semua modul berbagi data yang sama, bukan "sync" antar sistem

⚑

Real-time

Integrasi terjadi saat tombol diklik β€” bukan batch/scheduled seperti sistem terpisah

πŸ”„

Reversible

Sebagian besar flow bisa di-reverse: cancel delivery β†’ stok kembali; reverse journal entry

πŸ”—

Object Linking

Modul A membuat/update record di modul B via Python business logic

πŸ’‘ "Multiplier Effect": Integrasi bukan hanya efisiensi β€” menghasilkan data quality jauh lebih tinggi. Tidak ada lagi "stok di warehouse β‰  stok di accounting."

Flow 1: Sales to Cash

πŸ“ Quotation
Sales
β†’
βœ… Confirm SO
Sales
β†’
πŸ“¦ Delivery Order
Inventory
β†’
βœ“ Validate
Inventory
Stok ↓ + COGS
Inv + Acc
β†’
🧾 Invoice
Accounting
β†’
πŸ’³ Payment
Accounting
β†’
βœ… AR = 0
Selesai

Key Integration Points:

  • SO β†’ Delivery: Route ditentukan product config & warehouse rules
  • Delivery β†’ COGS: Debit COGS, Credit Inventory Asset (otomatis)
  • Invoice β†’ AR: Debit Receivable, Credit Revenue
  • Payment β†’ Bank: Debit Bank/Cash, Credit Receivable

Flow 2: Procure to Pay + Flows Lainnya

RFQ
Purchase
β†’
Confirm PO
Purchase
β†’
Receipt
Inventory
β†’
Vendor Bill
Accounting
β†’
Payment
Accounting

πŸ”‘ 3-Way Matching: PO ↔ Receipt ↔ Vendor Bill β€” quantity invoiceable = quantity received, bukan quantity ordered. Mencegah overpayment.

3 Flow Tambahan:

FlowAlurHasil Akhir
ManufacturingSO β†’ MO β†’ Consume RM β†’ Produce FGStok RM ↓, FG ↑, Cost JE
HR PayrollPayslip Validate β†’ Journal EntryBiaya Gaji, Utang BPJS, PPh 21
Project β†’ InvoiceSO Service β†’ Project β†’ Timesheet β†’ InvoiceRevenue JE dari billable hours

πŸ’‘ Tip: "Follow the Document"

Ketika integrasi tidak berjalan (jurnal tidak terbuat, stok tidak bergerak), jangan langsung cek setting β€” ikuti dokumen sumber!

Teknik Trace via Smart Button:

Sales Order
β†’
[Delivery: 1]
β†’
[Valuation: 1]
β†’
JE COGS βœ“

πŸ” Klik smart button di bagian atas form β€” setiap button = bukti dokumen lanjutan terbuat

Jika smart button tidak muncul atau menunjukkan angka 0 β€” di situlah integrasi putus!

⏱️ Waktu investasi: 2–5 menit per aliran, jauh lebih efisien dari membaca semua setting satu per satu.

Mini QuizSection 12.1

Apa yang terjadi secara otomatis saat Delivery Order divalidasi di Odoo?

A. Invoice otomatis terbuat dan terkirim ke pelanggan
B. Stok berkurang + jurnal COGS terbuat di Accounting
C. Payment otomatis terecord di bank journal
D. Purchase Order baru dibuat untuk restock

πŸ€” Pikirkan 30 detik β€” jawaban di slide berikutnya

JawabanSection 12.1
A. Invoice otomatis terbuat ❌
B. Stok berkurang + jurnal COGS terbuat βœ…
C. Payment otomatis terecord ❌
D. PO baru dibuat untuk restock ❌

Penjelasan: Validasi Delivery menghasilkan dua efek otomatis:

  • Stok berkurang di lokasi gudang (Inventory)
  • COGS Journal Entry terbuat: Debit COGS, Credit Inventory Asset (Accounting)

Invoice harus dibuat secara manual/terpisah dari SO. Payment baru terecord setelah pelanggan membayar.

12.2

Odoo API Fundamentals

Jembatan ke Sistem Eksternal

15 menit

Dua Tipe API Odoo + Autentikasi

XML-RPC (Tradisional)

  • Remote Procedure Call via XML
  • Tersedia di semua versi Odoo
  • Banyak library/SDK & contoh
  • Cocok: integrasi legacy, Python scripts

REST/JSON-RPC (Modern)

  • JSON-based, developer-friendly
  • Tersedia di Odoo 16+
  • Familiar untuk web developer
  • Cocok: web app, mobile, microservices

πŸ”‘ Authentication via API Key

# Generate API Key:
# Settings β†’ Users β†’ [user] β†’ API Keys β†’ Generate

import xmlrpc.client
url = 'https://namaumkm.odoo.com'
common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
uid = common.authenticate(db, username, api_key, {})

πŸ’‘ Gunakan API Key (bukan password) β€” bisa di-revoke tanpa mengubah password akun

CRUD Operations via API

OperationMethodContoh Use Case
Createcreate()Buat customer baru dari web form
Readsearch_read()Ambil produk dengan stok > 0
Updatewrite()Update harga produk dari marketplace
Deleteunlink()Jarang dipakai β€” lebih aman archive

⚠️ API Key = Kunci Gedung, Bukan Kunci Kamar!

# ❌ JANGAN
API_KEY = "4abb3d74..."
# βœ… BENAR
import os
API_KEY = os.environ.get("ODOO_API_KEY")
  • Jangan simpan di GitHub public repo
  • Generate key terpisah per integrasi β€” beri nama deskriptif
  • Jika bocor β†’ revoke segera
Mini QuizSection 12.2

Bagaimana cara yang BENAR menyimpan API key untuk integrasi Odoo?

A. Hardcode langsung di source code Python
B. Simpan di file README.md yang di-push ke GitHub
C. Gunakan environment variable atau secret manager
D. Tulis di sticky note yang ditempel di monitor

πŸ€” Pikirkan 30 detik β€” jawaban di slide berikutnya

JawabanSection 12.2
A. Hardcode di source code ❌
B. Di README.md GitHub ❌
C. Environment variable / secret manager βœ…
D. Di sticky note ❌

Penjelasan: API key memiliki akses setara user yang membuatnya. Praktik keamanan wajib:

  • Simpan di environment variable (os.environ.get())
  • Generate key terpisah per integrasi β€” "Make.com Tokopedia Sync" bukan "key1"
  • Jika bocor/tidak dipakai β†’ revoke segera di Settings β†’ Users β†’ Security
12.3

External System Integration

Menghubungkan Odoo dengan Ekosistem Digital Indonesia

15 menit

Marketplace Integration: Tokopedia & Shopee

🟒 Tokopedia API
β†˜
βš™οΈ Middleware
Make.com / iPaaS
↔
Odoo
Single Source of Truth
🟠 Shopee API
β†—

4 Opsi Connector untuk UMKM:

OpsiKelebihanKekurangan
Official ConnectorBuilt-in, terawatEnterprise only
Third-party ModuleBanyak pilihanKualitas bervariasi
iPaaS (Make/Zapier)No-code, cepat setupBiaya bulanan
Custom APIFleksibilitas penuhButuh developer

πŸ’‘ Data sync: Order masuk β†’ Draft SO di Odoo | Stok terkini β†’ Platform listing (setiap 15 menit)

Payment Gateway, Ekspedisi & E-Faktur

πŸ’³ Payment Gateway

  • Midtrans: QRIS, bank transfer, CC
  • Xendit: QRIS, OVO, GoPay
  • Webhook β†’ Odoo auto-record payment
  • No more "sudah transfer, cek ya"

🚚 Ekspedisi

  • JNE, SiCepat, J&T, AnterAja
  • Real-time ongkir di SO
  • Tracking number auto-sync
  • Third-party modules tersedia

🧾 Accounting ID

  • E-Faktur: Export β†’ DJP format
  • Bank Import: CSV dari BCA/Mandiri/BRI
  • Auto-reconcile dengan invoice
  • QRIS via bank statement import
Customer "Bayar"
β†’
Gateway (Midtrans)
β†’
Webhook β†’ Odoo
β†’
Invoice Paid βœ…
Mini QuizSection 12.3

Apa masalah utama UMKM yang berjualan di banyak channel tanpa centralized inventory?

A. Loading website terlalu lambat
B. Overselling β€” menjual melebihi stok yang tersedia
C. Karyawan terlalu banyak sehingga sulit dikelola
D. Biaya pajak PPN meningkat drastis

πŸ€” Pikirkan 30 detik β€” jawaban di slide berikutnya

JawabanSection 12.3
A. Loading website lambat ❌
B. Overselling β€” menjual melebihi stok βœ…
C. Karyawan terlalu banyak ❌
D. Biaya pajak meningkat ❌

Penjelasan: Tanpa centralized inventory, stok di setiap channel dikelola terpisah. Ketika produk terjual di satu channel, channel lain belum terupdate β†’ pelanggan bisa membeli barang yang sebenarnya sudah habis.

Solusi: Odoo sebagai single source of truth + sync stok ke semua marketplace.

12.4

Odoo Studio

Kustomisasi Tanpa Kode untuk Kebutuhan Spesifik UMKM

15 menit

Studio Overview & Custom Fields

Apa itu Odoo Studio?

  • No-code tool untuk kustomisasi Odoo
  • Akses: klik icon pensil (Studio) di toolbar
  • Enterprise feature β€” tersedia di semua cloud plans

Bisa βœ… vs Tidak Bisa ❌

  • βœ… Custom fields, views, reports, automated actions
  • ❌ Modifikasi Python business logic
  • ❌ Complex database schema changes

Tipe Custom Field:

TipeContoh
TextCatatan khusus, kode referensi
SelectionKategori Pelanggan
Integer/FloatQuantity custom
DateDeadline custom
Boolean"VIP Customer?"
Many2oneRelasi ke model lain

Automated Actions & Peringatan Studio

Contoh Automated Actions untuk UMKM:

πŸ“§ SO confirmed & total > Rp 5 juta β†’ email notifikasi ke owner

πŸ“¦ Stok < reorder point β†’ notifikasi ke procurement

⏰ Vendor bill 3 hari sebelum jatuh tempo β†’ reminder ke finance

❄️ Lead probability < 20% selama 14 hari β†’ otomatis jadikan "Cold Lead"

⚠️ Studio: Perubahan Langsung Berlaku, Tidak Ada Undo!

  • Hapus field berisi data β†’ data ikut hilang permanen
  • Ubah tipe field (Selection β†’ Text) β†’ bisa korup data lama
  • βœ… Sebelum ubah/hapus: export data ke Excel sebagai backup
  • βœ… Lakukan perubahan besar di luar jam kerja
Mini QuizSection 12.4

Apa yang TIDAK bisa dilakukan menggunakan Odoo Studio?

A. Menambah custom field baru ke form
B. Membuat automated action (notifikasi otomatis)
C. Memodifikasi logika bisnis Python (business logic)
D. Mengubah layout report PDF

πŸ€” Pikirkan 30 detik β€” jawaban di slide berikutnya

JawabanSection 12.4
A. Custom field baru ❌
B. Automated action ❌
C. Modifikasi logika bisnis Python βœ…
D. Ubah layout report PDF ❌

Penjelasan: Odoo Studio dirancang untuk kustomisasi no-code β€” fields, views, reports, dan automated actions. Untuk mengubah core business logic (Python code), diperlukan custom module yang dikembangkan oleh developer.

πŸ’‘ Tip 12.2: Tambah custom fields sebelum ada banyak data β€” back-fill ratusan records sangat merepotkan!

12.5–8

Security, Performance,
DR & Maintenance

Lindungi, Optimalkan, dan Rawat Sistem Odoo Anda

10 menit

πŸ” Security Best Practices

πŸ”’ 2FA (Two-Factor Auth)

  • Password + kode dari Google Authenticator
  • Wajib: Owner, Finance, HR
  • Recommended: semua user
  • Backup codes untuk HP hilang

πŸ›‘οΈ Least Privilege

  • Akses minimum yang dibutuhkan
  • Gunakan Groups, bukan per-user
  • Settings β†’ Users β†’ Access Rights
  • Audit tiap bulan: user resign?

Contoh User Access Matrix UMKM Retail:

RoleSalesPurchaseInventoryAccountingHRCRM
Sales StaffUserβ€”Readβ€”β€”User
Warehouseβ€”β€”Userβ€”β€”β€”
AccountantReadReadReadManagerβ€”β€”
OwnerAdminAdminAdminAdminAdminAdmin

Performance, Backup & Disaster Recovery

⚑ Performance

  • Hapus demo data sebelum go-live
  • Archive records tidak aktif
  • Review scheduled actions
  • Gunakan date filter di laporan

πŸ’Ύ Backup

  • SaaS: otomatis daily, retensi 90 hari
  • Manual backup sebelum perubahan besar
  • Test restore setiap 3 bulan
  • Download local copy tiap bulan

πŸ†˜ Disaster Recovery

  • Internet down β†’ offline export
  • DB corrupt β†’ restore backup
  • User error massal β†’ access rights
  • Security breach β†’ 2FA + revoke

πŸ”„ Maintenance Schedule:

Monthly
User audit, pending reviews
Quarterly
Module review, backup test
Annually
Version upgrade, process review

πŸ“‹ Studi Kasus: Batik Nusantara Online

BisnisFashion retail batik premium
LokasiJakarta (3 toko fisik)
Channel3 toko + Tokopedia + Shopee
Karyawan15 orang
RevenueRp 420 juta/bulan

πŸͺ

Bu Kartika Dewi

Owner sejak 2017

Masalah Utama:

  • Stok di Excel per toko β†’ 3–5 kasus overselling/bulan
  • Rekap penjualan 5 channel β†’ 2–3 hari kerja manual/bulan
  • Toko Depok restok produk yang sebenarnya masih banyak di Kemang
  • Tidak tahu margin per channel β€” "angka baru jadi 2 minggu kemudian"

πŸ“Š Hasil: Before vs After (6 Bulan)

3–5Γ— β†’ 0
Overselling/bulan
82% β†’ 96%
Order Fulfillment
2–3 hari β†’ 5 min
Laporan Keuangan
~70% β†’ 99,2%
Akurasi Stok
60 min β†’ 5 min
Response Marketplace
+35%
Revenue Growth

"Yang paling saya syukuri bukan angka penjualannya β€” tapi sekarang saya bisa lihat mana toko yang untung dan mana yang merugi dalam 10 menit."

β€” Bu Kartika Dewi, Owner

πŸ’‘ Temuan mengejutkan: Margin toko fisik Pasar Baru 31% vs Tokopedia 18% (setelah fee) β€” data ini belum pernah bisa dihitung sebelumnya.

πŸŽ“ Lessons Learned

1️⃣

Verifikasi Opening Balance Sebelum Go-Live

Selisih Rp 12 juta dari stock opname 2 minggu sebelum go-live. Stok bergerak tiap hari β€” jeda harus diminimalkan.

2️⃣

External Integration Butuh Fallback Manual

Make.com downtime 4 jam β†’ 12 order harus di-input manual. Setiap integrasi eksternal harus punya prosedur fallback.

3️⃣

User Adoption Menentukan ROI

35% revenue growth tidak akan terjadi jika kasir tetap pakai sistem lama. Investasikan di training + "champion."

4️⃣

Data Adalah Aset

Margin Tokopedia 18% vs toko fisik 31% mengubah strategi β€” produk premium ke toko fisik, entry-level ke marketplace.

πŸ“ Rangkuman Bab 12

1.

Odoo menggunakan single database β€” integrasi antar modul terjadi real-time, bukan batch sync

2.

Sales to Cash & Procure to Pay adalah dua flow integrasi paling fundamental

3.

Odoo API (XML-RPC/REST) memungkinkan integrasi dengan sistem eksternal β€” marketplace, payment gateway, ekspedisi

4.

Centralized inventory via Odoo adalah solusi utama masalah overselling di UMKM omnichannel

5.

Odoo Studio memungkinkan kustomisasi no-code (custom fields, automated actions) β€” tapi perubahan tidak bisa di-undo

6.

Prinsip least privilege + 2FA adalah fondasi keamanan sistem ERP untuk UMKM

7.

Setiap integrasi eksternal harus memiliki prosedur fallback manual

8.

Pre-go-live checklist adalah "kontrak bersama" β€” bukan sekadar formalitas

πŸ—ΊοΈ Integration Map: Odoo sebagai Hub

🟒 Tokopedia
🟠 Shopee
πŸ’³ Midtrans
↕ API / iPaaS ↕
Odoo 19 β€” Single Source of Truth
Sales Purchase Inventory Accounting HR CRM Manufacturing
↕ Integration ↕
🚚 JNE/SiCepat
🏦 Bank BCA
🧾 E-Faktur DJP

πŸ”¬ Di Lab Minggu Ini...

Step 1

Integration Verification β€” Jalankan Sales to Cash & Procure to Pay end-to-end, verifikasi setiap titik integrasi

Step 2

Odoo Studio β€” Tambah custom fields + buat automated action untuk UMKM mitra

Step 3

Security Configuration β€” Aktifkan 2FA, audit access rights, buat user access matrix

Step 4

Cleanup & Documentation β€” Archive demo data, susun user manual per role

Step 5

Pre-Go-Live Checklist β€” Isi dan verifikasi minimal 25 item bersama UMKM mitra

⏱️ Total: 120 menit | Persiapkan: semua modul Bab 4–11 sudah aktif + sample transactions

πŸ“š Referensi

Monk, E. F., & Wagner, B. J. (2013). Concepts in Enterprise Resource Planning (4th ed.). Cengage Learning.

Odoo S.A. (2024). External API. Odoo 19.0 Documentation.

Odoo S.A. (2024). Odoo Studio. Odoo 19.0 Documentation.

Odoo S.A. (2024). Users & Access Rights. Odoo 19.0 Documentation.

NIST. (2020). Security and Privacy Controls for Information Systems and Organizations (SP 800-53 Rev. 5).

Terima Kasih

BAB 12 β€” Integration, Customization & Best Practices

Minggu depan β†’ BAB 13 Go-Live & Handover

Sistem Informasi Enterprise β€” ERP Odoo 19.0
dengan Real UMKM Partner Program