12 KiB
CEO Dashboard V2 Implementation Report
Date: 2026-08-30
Addon: mcs_operating_system
Odoo version: 17
Latest deployed commit: 45a012b
Summary
CEO Dashboard V2 was implemented as an extension of the existing mcs_operating_system addon. The existing operating system models, menus, CRM extensions, project extensions, timesheet extensions, profitability records, and seeded records were preserved.
The implementation adds a visual Odoo client dashboard, client-account rollups, project health/priority fields, CEO action tracking, internal-bet separation, portfolio seeding, profitability recomputation, CRM delivery-project support, cron repair, and focused tests.
Files Added
addons/mcs_operating_system/hooks.pyaddons/mcs_operating_system/models/ceo_action.pyaddons/mcs_operating_system/models/res_partner.pyaddons/mcs_operating_system/static/src/js/ceo_dashboard_v2.jsaddons/mcs_operating_system/static/src/scss/ceo_dashboard_v2.scssaddons/mcs_operating_system/static/src/xml/ceo_dashboard_v2.xmladdons/mcs_operating_system/tests/__init__.pyaddons/mcs_operating_system/tests/test_ceo_dashboard_v2.pyaddons/mcs_operating_system/views/ceo_action_views.xmladdons/mcs_operating_system/views/res_partner_views.xmladdons/mcs_operating_system/CEO_DASHBOARD_V2_IMPLEMENTATION_REPORT.md
Files Modified
addons/mcs_operating_system/__init__.pyaddons/mcs_operating_system/__manifest__.pyaddons/mcs_operating_system/data/crm_data.xmladdons/mcs_operating_system/data/project_data.xmladdons/mcs_operating_system/models/__init__.pyaddons/mcs_operating_system/models/crm_lead.pyaddons/mcs_operating_system/models/dashboard.pyaddons/mcs_operating_system/models/operating.pyaddons/mcs_operating_system/models/project.pyaddons/mcs_operating_system/security/ir.model.access.csvaddons/mcs_operating_system/views/crm_lead_views.xmladdons/mcs_operating_system/views/dashboard_views.xmladdons/mcs_operating_system/views/menu.xmladdons/mcs_operating_system/views/operating_views.xmladdons/mcs_operating_system/views/project_views.xml
Models Created
mcs.ceo.action
Tracks actions, decisions, approvals, blockers, and financial/business-impact items requiring CEO attention.
Fields include:
titlecategoryprioritypriority_rankstatedate_dueresponsible_user_idpartner_idproject_idlead_idexpected_financial_impactbusiness_impactnext_actionblockernotesdate_createddate_completed
Workflow actions:
- Open
- Waiting
- Blocked
- Completed
- Cancelled
Models Extended
res.partner
Added lightweight client-account rollup fields:
mcs_is_client_accountmcs_account_statusmcs_account_healthmcs_currency_idmcs_monthly_revenuemcs_contracted_valuemcs_monthly_hoursmcs_effective_hourly_revenuemcs_account_owner_idmcs_next_account_actionmcs_account_risk_reasonmcs_project_ids
A defensive public maintenance action was added:
action_mcs_ensure_client_account_columns
This was needed to repair the live half-upgraded state where the registry saw the new partner fields before the database columns existed.
project.project
Added delivery, portfolio, priority, stale, and internal-bet fields:
mcs_delivery_typemcs_portfolio_healthmcs_risk_scoremcs_last_meaningful_progress_datemcs_days_since_meaningful_progressmcs_stalemcs_stale_threshold_daysmcs_launch_completion_datemcs_revenue_impact_scoremcs_client_importance_scoremcs_urgency_scoremcs_completion_leverage_scoremcs_resource_cost_scoremcs_commercial_priority_scoremcs_internal_product_stagemcs_internal_expected_revenuemcs_internal_actual_revenuemcs_next_milestonemcs_next_decision_date
crm.lead
Added:
action_mcs_create_delivery_project
This supports creating or linking a delivery project from a won opportunity while preserving the standard customer/project relationship.
mcs.client.profitability
Added:
action_recompute_from_project- Project/period onchange recomputation
The recompute pulls project revenue and period timesheets into profitability fields.
mcs.operating.dashboard
Added:
get_ceo_dashboard_v2_dataaction_mcs_seed_v2_operating_data
The dashboard payload contains company pulse, revenue, funnel, portfolio, project health, capacity, time distribution, allocation guardrail, CEO actions, internal bets, and drill-down actions.
Computed Fields
Client-account computed rollups:
- Account health
- Monthly revenue
- Contracted value
- Monthly hours
- Effective hourly revenue
Project computed fields:
- Commercial priority score
- Last meaningful progress date
- Days since meaningful progress
- Stale flag
- Risk score
- Portfolio health
Dashboard computed payload:
- Revenue coverage
- Revenue coverage status
- Revenue gap
- Pipeline coverage
- Pipeline coverage status
- Team utilization
- Billable utilization
- Project health distribution
- Capacity rows per employee
- Time distribution by work category and billable class
- Resource allocation guardrail
XML Views
Added:
- CEO action tree/form/search/action views
- Client account partner tree/form/action views
- CEO Dashboard V2 client action
Extended:
- Project form operating section
- CRM lead header
- Profitability form
- MCS Operating System menu
JS / OWL Dashboard
Added Odoo client action:
- Tag:
mcs_ceo_dashboard_v2 - JS component:
McsCeoDashboardV2 - Template:
mcs_operating_system.CeoDashboardV2
Dashboard rows:
- Company Pulse
- Revenue Target vs Actual vs Forecast
- CRM Funnel / Pipeline Coverage
- Client Portfolio Health
- Project Health Distribution
- Team Capacity
- Hours Distribution
- CEO Attention Queue
- Internal Bets
- Resource Allocation Guardrail
Menus And Actions
Main CEO Dashboard menu now points to:
action_mcs_ceo_dashboard_v2
Added management menus:
- Client Accounts
- CEO Actions
The classic form dashboard still exists as:
action_mcs_operating_dashboard
Security Changes
Added access:
mcs.ceo.actionread-only for Operating System Usermcs.ceo.actionfull access for Operating System Managermcs.operating.dashboardread-only for Operating System Manager
Changed:
- Dashboard financial access is manager-only.
Cron Changes
The existing cron was preserved:
MCS: Schedule Missing CRM Follow-Ups
The live root cause was data/configuration drift: the cron existed but was inactive. The V2 setup hook now explicitly repairs this intended state without creating duplicate activities.
Live result:
- Cron active:
True
Data / Migration Changes
Static CRM and project seed files were marked noupdate to prevent upgrade conflicts with live records that had drifted from their original XML IDs.
Added idempotent setup logic for client accounts and portfolio workstreams.
Seeded client accounts:
- ClicksToCart
- Wallaceton
- Maison de Treats
- Lens and Frames
- TNCSC
- Infini
- Organic Healthy Family
- Hondavert
- RaceNation
- Racewerks
- Internal
Seeded or linked workstreams:
- ClicksToCart - ERP Implementation
- ClicksToCart - App Development
- ClicksToCart - Social Media Handling
- Wallaceton - SEO
- Wallaceton - Social Media Handling
- Wallaceton - Ads Management
- Maison de Treats - Social Media Handling
- Lens and Frames - SEO
- Lens and Frames - Social Media Handling
- Lens and Frames - Ads Management
- TNCSC - Ads Management
- TNCSC - Videos
- TNCSC - ERP
- Infini - Social Media Handling
- Organic Healthy Family - Shopify Store Development
- Hondavert - Website Development
- Hondavert - App Development
- RaceNation - Website Development
- Racewerks - Website Development
- Internal - Shopify App for Revenue Generation
- Internal - Custom Product Development
The hook does not overwrite live task/project data. It creates missing records and fills blank operating fields only.
Tests Added
Added transaction tests for:
- Project commercial priority score
- Client account rollup
- CEO action workflow
- Dashboard V2 payload sections
- CRM follow-up idempotency
Test file:
addons/mcs_operating_system/tests/test_ceo_dashboard_v2.py
Tests / Validation Executed
Local validation executed:
- Python syntax compile over
mcs_operating_systemPython files - XML parse validation over
mcs_operating_systemXML files
Local Odoo test execution was not possible because Docker Desktop was not running on this machine:
- Docker API error: Docker daemon pipe not found
Live validation executed through XML-RPC:
- Module upgrade succeeded
- V2 seed action succeeded
- Dashboard payload method succeeded
- Client action exists
- Client accounts created/linked
- Delivery type projects created/linked
- Internal bets separated
- Follow-up cron active
Live Upgrade Result
Final live upgrade result:
- Module:
mcs_operating_system - State:
installed - Version:
17.0.1.0.0 - Upgrade action returned successfully
Live verification:
- Client action
mcs_ceo_dashboard_v2: exists - Client accounts: 11
- Projects with delivery type: 21
- Internal bets: 2
- CRM follow-up cron active: True
- Dashboard payload sections returned:
actionsallocation_guardrailcapacityceo_actionscompany_pulseinternal_betskpisperiodportfolioproject_healthrevenuetime_distribution
Dashboard payload counts:
- Portfolio rows: 10
- Capacity rows: 15
- Internal bet rows: 2
Revenue coverage on verification:
- Coverage: 0%
- Status: critical
This is expected until monthly revenue/cost source data is populated in live records.
Known Limitations
- Browser screenshot and browser-console validation were not completed because no authenticated browser session was available through the current tool context.
- Local Odoo automated tests were added but not executed because Docker Desktop was not running.
- Operating cost is derived from open HR contract wages when
hr.contractis available. It does not yet include other overhead categories such as rent, subscriptions, or infrastructure. - Internal-bet estimated cost is currently returned as
0because no employee/hourly-cost source model exists yet in this addon. - CRM-to-project workflow supports delivery project creation, but automatic sale order creation/linking is not fully implemented.
- Portfolio stale calculation uses available signals: project write date, task write date, and timesheet dates. It does not yet detect milestone completion or formal project status updates separately.
- Dashboard visuals are implemented as an Odoo client action with cards, bars, and tables. It is not a spreadsheet-style BI dashboard and does not yet use external charting libraries.
- Some seeded legacy setup records had live drift. CRM/project static setup XML was marked
noupdateto avoid duplicate/unique conflicts during upgrades.
V2.1 Support Forward Compatibility
The future Client Support System is intentionally deferred to MCS Operating System V2.1 and is not part of the CEO Dashboard V2 completion scope.
Account health was refactored to support future signals through:
_mcs_get_account_health_signals(projects)_mcs_resolve_account_health(signals)
Future Helpdesk/support metrics should extend those methods instead of replacing the client-account model or duplicating account-health logic.
Not Fully Implemented From Specification
- Fully automatic opportunity-won sale order creation.
- Dedicated configuration model for stale threshold and pipeline multiplier.
- Real internal-product cost calculation from employee cost rates.
- Browser-based screenshot validation.
- Browser console validation.
- Full performance optimization with
read_groupeverywhere. - Full automated test execution in this environment.
Current Status
CEO Dashboard V2 is implemented, pushed, and upgraded on the live server. The dashboard backend payload is returning live data, drill-down action definitions exist, the visual client action is registered, portfolio rollup data is seeded without overwriting live work, internal products are separated, and the CRM follow-up cron is active.