# Phase 6.3 — Enterprise Sales Collaboration Platform | Field | Value | | --- | --- | | Status | Complete | | Module | crm | | Version | 0.6.3.0 | | Database | `crm_db` | | Migration | `0004_phase_63_collaboration` | | Depends On | Phase 6.2 | ## Goal Implement Sales CRM **collaboration** features only: activities, tasks, meetings, calls, email metadata, unified timeline, comments/mentions, bookmarks/favorites, sales team membership, and collaboration audit. Out of scope: Workflow, Automation, Customer360, Marketing, Helpdesk, Communication Platform, Notification delivery, AI, Analytics. ## Collaboration Architecture ``` API → Activity / Task / Meeting / Call / Email / Timeline / Comment / Mention / Bookmark / Team Services → Validators → Tenant repositories → Independent aggregates (UUID refs) → Immutable timeline + publish-only events ``` Email and notification preferences store CRM metadata only; delivery remains outside CRM. ## Timeline Model `sales_timeline` (immutable) + `timeline_events` link rows. | Field | Notes | | --- | --- | | event_type | lead/contact/org/opportunity/activity/meeting/call/email/task/note/attachment/comment/mention | | entity_type / entity_id | Primary subject | | related_* ids | Opportunity / lead / contact / organization | | occurred_at, payload, is_immutable | Always locked after write | ## Activity Model Expanded `sales_activities` plus lookups: - `activity_types`, `activity_statuses`, `activity_priorities` - `activity_participants`, `activity_reminders` Types: call, meeting, task, email, follow_up, visit, demo, presentation, negotiation, custom, note, other. Fields: subject, description, owner, status, priority, due/completed, related lead/contact/org/opportunity. ## Meeting Model `meetings` + `meeting_attendees`: start/end, location, online URL, agenda, notes, outcome, CRM entity links. ## Call Model `call_logs` + `call_outcomes`: inbound/outbound, duration, outcome, recording_ref, notes; **opportunity_id required**. ## Comment Model `comments` (threaded via `parent_comment_id`, pinned, soft delete) + `comment_versions` + `mentions` (unread + notification event flag). ## Business Rules 1. Timeline entries immutable 2. Activity history auditable (`sales_collaboration_audit`) 3. Comments versioned on edit 4. Meetings linked to CRM entities (UUID refs) 5. Calls linked to opportunities (required) 6. Email stores metadata only (no delivery) 7. Everything tenant-aware ## Validation Rules | Validator | Rules | | --- | --- | | Activity | subject required; complete only if not completed/cancelled | | Meeting | end_at > start_at | | Task | title required; complete once | | Call | opportunity required; duration ≥ 0 | | Timeline | reject mutations when `is_immutable` | | Comment | non-empty body; bookmark entity limited to lead/contact/org/opportunity | ## Events | Event | When | | --- | --- | | `crm.activity.created` | Activity created | | `crm.task.completed` | Task completed | | `crm.meeting.finished` | Meeting finished | | `crm.call.logged` | Call logged | | `crm.timeline.updated` | Timeline entry appended | | `crm.comment.created` | Comment created | | `crm.mention.created` | @user mention created | ## Permissions - `crm.activities.*` - `crm.tasks.*` - `crm.meetings.*` - `crm.calls.*` - `crm.timeline.*` - `crm.comments.*` - `crm.mentions.*` - `crm.team.*` ## API Endpoints | Area | Paths | | --- | --- | | Activities | `/api/v1/activities` (+ participants, reminders) | | Tasks | `/api/v1/tasks`, checklist, complete | | Meetings | `/api/v1/meetings`, attendees, finish | | Calls | `/api/v1/calls` | | Email metadata | `/api/v1/email-threads`, `/emails` | | Timeline | `/api/v1/timeline`, `/timeline/opportunities/{id}` | | Comments / Mentions | `/api/v1/comments`, `/mentions/unread`, `/mentions/{id}/read` | | Bookmarks / Favorites | `/api/v1/bookmarks`, `/favorites` | | Team | `/api/v1/team-roles`, `/team-members`, `/team-assignments` | | Preferences | `/api/v1/collaboration-preferences/{user_id}` | ## Migration Summary - Revision: `0004_phase_63_collaboration` (down: `0003_phase_62_sales_engine`) - Additive `create_all` for collaboration tables - `sales_activities` model expanded (priority + entity refs) ## Tests Executed Model, repository, service, API, timeline, activity, meeting, task, call, permission, migration, audit, tenant isolation, documentation validation. ## Known Limitations - Timeline writers for lead/contact/org create paths are available via `TimelineService.append` but not yet auto-wired into every Phase 6.1 mutation (collaboration/activity/task/meeting/call/comment emit today) - Email/opened/clicked are CRM metadata flags — Notification Service owns delivery - Recording and meeting URLs are references only ## CRM Completion Status Phases **6.0 + 6.1 + 6.2 + 6.3** complete → **CRM Core Platform** ready for Sales CRM use within stated boundaries. ## Next Do not auto-start further modules. Scope next CRM slice explicitly in `docs/next-steps.md`. ## Related Documents - [Progress](progress.md) - [Phase 6.0](crm-phase-6-0.md) - [Phase 6.1](crm-phase-6-1.md) - [Phase 6.2](crm-phase-6-2.md) - [Module Registry](module-registry.md#crm)