Skip to content

Phase 7: Integrate Twenty CRM interoperability for core CRM workflows #36

@wauputr4

Description

@wauputr4

Why

Kita sudah mulai jadi CRM internal sendiri. Beberapa fitur (pipeline, kontak, activity tracking) yang kuat di "Twenty" ingin dipakai tanpa mengunci core logic Kelompok ke vendor itu.

Goal

Sediakan integrasi dengan Twenty CRM (https://twenty.com/) untuk bisa memakai fitur CRMnya sebagai sinkronisasi/single source for people/activities, sambil tetap menjaga core Kelompok tetap modular + pluginable.

Scope

  • Buat adapter/plugin integration layer (preferably sebagai eksternal plugin), bukan core hardcoding.
  • Read/write sync untuk entitas inti:
    • Organizations <-> Accounts/Companies
    • Members <-> Contacts
    • (Opsional) Events <-> Opportunities / Activities
    • Claims/ownership metadata mapping (safely, non-sensitive).
  • Auth model: OAuth/client credentials + token rotation + secret storage pattern.
  • Mapping & field transform registry:
    • Normalisasi nama, email, telepon, posisi/jabatan, SDGS tags, lokasi.
    • Optional custom field mapping untuk data .
  • Webhook or polling sync strategy (configurable per install):
    • Pull updates from Twenty
    • Push local updates ke Twenty
    • Conflict policy (source-of-truth + timestamp/uuid)
  • Audit trail for import/export/import result
  • Idempotent id mapping ( -> )
  • CLI command to run sync:

  • REST API/admin endpoint for sync status/jobs
    • e.g. trigger sync and read last run / last errors
  • Basic admin UI action button (opsional, non-blocking): manual sync, last sync time, last error.

Out of scope (fase ini)

  • Full bi-directional conflict-free CRDT semantics
  • Payment/invoice sync
  • Full history migration of existing CRM objects

Definition of Done

  • At least one successful integration path untuk Organizations + Members
  • Konfigurasi token/key tersimpan aman dan tidak leak ke event logs
  • Sync command bisa dry-run dan menghasilkan log ringkas success/fail
  • Mapping rules bisa diatur lewat config/JSON tanpa edit source code
  • Dokumentasi lengkap di + contoh konfigurasi
  • Catatan risiko keamanan dan batasan rate limit ditulis di docs

Acceptance notes

  • Integrasi ini harus dijalankan sebagai fitur plugin agar kelola modularity/core project tetap terjaga.
  • Jika API berubah, plugin harus easy to patch tanpa downtime core.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions