Pre-alpha. No tagged release and no upgrade path between versions. Use for evaluation and development only, not production.
Addons DevPre-alpha

Engagements Cookbook

Tutorial business app for custom-module authors in sumeru_custom_addons/addons/engagement_cookbook/. Models a client engagements practice while teaching widgets, views, depends, model inherit, view xpath inherit, and event bridges.

Scaffold vs cookbook

make new MODULE=xengagement_cookbook
Models1 stub6 business models + partner inherit
Viewslist, form, kanbanAll 10 view types + search
Dependsbasebase, contacts, hr, mail
Use whenStarting production workLearning full addon patterns

Get it running

From sumeru_custom_addons/:

make setupmake install MODULES=engagement_cookbookmake run

Open Engagements Cookbook in the launcher. Demo engagements, deliverables, milestones, sites, and partners load from data/demo.xml.

Models

ModelBusiness role
engagement.projectClient engagement — workflow, budget, relations, chatter
engagement.deliverableBillable lines (line_total computed)
engagement.milestoneCalendar + gantt milestones
engagement.siteMap markers linked to projects
engagement.tagLabels (M2M on projects)
engagement.service.lineConsulting / implementation / support

Partner inherit: PartnerEngagement extends core.partner with engagement_tier and strategic_account (models/partner_extend.go).

Module dependencies

ModulePurpose
baseCompanies, users, partners, security
contactsPartner UI + view inherit parent
hrLead consultant on engagements
mailChatter on engagement form
SectionMenuView modes
Operations → Engagementsaction_engagement_projectkanban, list, form, calendar, gantt
Operations → Deliverablesaction_engagement_deliverablelist, form
Planning → Milestonesaction_engagement_milestonecalendar, gantt, list, form
Planning → Client sitesaction_engagement_sitemap, list, form
Analytics → Engagement analysisaction_engagement_analysisgraph, pivot, cohort, list
Clients → Contacts (extended)action_engagement_contactslist, form, kanban
ConfigurationTags, Service lines, Aboutmanager

Inheritance examples

Model inherit

PartnerEngagement in models/partner_extend.go:

models/partner_extend.go
go
type PartnerEngagement struct {    sdk.Model `sumeru:"inherit=core.partner"`    EngagementTier   sdk.Selection[EngagementTier] `sumeru:"string=Engagement Tier,default=standard"`    StrategicAccount sdk.Boolean                 `sumeru:"string=Strategic Account,default=false"`}

Run make generate then -u engagement_cookbook so schema sync adds columns to core_partner.

See also: kernel demo in sumeru/addons/contacts/models/partner_extend.go and Model inherit how-to.

View inherit

views/partner_inherit_views.xml xpath on contacts.view_core_partner_form:

xml
xml
<record id="view_engagement_partner_inherit" model="sys.view">
    <field name="inherit_id" ref="contacts.view_core_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='phone']" position="after">
            <field name="engagement_tier" string="Engagement Tier"/>
            <field name="strategic_account" string="Strategic Account"/>
        </xpath>
    </field>
</record>

Event bridge

hooks.go promotes client tier when a project reaches done:

go
go
func init() {
    event.Subscribe("record.updated", onProjectDoneUpdatePartner)
}

See sale_crm in sumeru_addons for production bridge modules.

View-type file map

TypeFile
list / form / kanban / search / graph / pivot / calendar / gantt / cohortviews/*_view.xml
milestonesviews/event_views.xml
mapviews/place_views.xml
deliverablesviews/line_views.xml
partner inheritviews/partner_inherit_views.xml

Cross-module relations

After changing depends or typed relations:

make generatemake update MODULES=engagement_cookbook

See also