Set org owner usernameAlias on creation and fix website-contact member alias
主模型适用于所有三种成员类型
profile Maxed Out Master Model 现在的设置适用于会员,适用于团队会员, 并应用 ToOwners 全部真实,所以每个成员类型都可以看到主模型的 分支类型作为/网络上的创建选项。 署长模板 继续授予每个角色权利类型,包括新的 CREATE CHILD ORG right (id 131) ,...
管理员默认角色模板从所有权利 GRANTED 开始
profileMaxed OutMasterModel 现在将管理员模板填入 每个角色权利Type 设置到GRANDTED。 其他三个模板(小组成员: 捍卫民主阵线(DEFAULT)成员仍然以零权利实现(NOT Specified for ),与非管理员角色的预定空白基线相匹配. 为什么GRANTED(不是FORCE...
启用时为 KamoCRM 提供最大输出主安全模型
数据Loader 现在创建并指派一个主机 ChildOrg Security Model 到 org 创建后立即创建 KamoCRM, 每个设置最大 最允许/强制值: - 允许Owners View OtherOrgs / 允许Owners PrivateOrgs / 允许Sub Childorgs = 真实 - 身...
Add FEATURE_REQUESTS to Support category and all plan-feature mappings
Free: Community vote, Starter: Vote & request, Business: Priority requests, Enterprise: Custom dev included
UPSERT SYSTEM email template rows on every run
Previously the seed runner only inserted rows that didn't exist, so canonical HTML changes never propagated to the DB. Now existing SYSTEM rows have their bodyH...
Add dao.repositories to EnableJpaRepositories scan
EmailTemplateRepository lives under dao.repositories.email, not dao.repos, so it was not picked up as a Spring bean.
SP5 migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Add KamoCRMAgeReqUpdateRunner (order 10) — conditional idempotent UPDATE on startup; WHERE clause checks old value so re-runs are no-ops. Errors are swallowed s...
Add SP4 email_verification_tokens DDL + User alias/email_verified columns
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
Add EmailTemplateSeedRunner for SYSTEM + per-org seeding
Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills ...
Add partial unique indexes + CHECK constraints for email_templates
Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern aft...
Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs
The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAg...
Tighten KamoCRMAgeReqUpdateRunner per review
- Restore Javadoc paragraph explaining @Order(10) rationale. - Test now references the UPDATE_SQL constant directly instead of duplicating the SQL string, so ...
Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — start...
Add verification_token and ownership_verified columns to org_domains
Add ssl_confirmed and ssl_confirmed_at columns to org_domains
Adds idempotent ALTER TABLE statements to provision the two new columns needed for DNS setup SSL confirmation tracking.
Update kamo-shared-library version from 1.0.0 to 1.1.0
Needed to resolve the new billing entities in the commerce.billing package added to shared library 1.1.0.
Add billing config initialization to KamoCRMPricingLoader
Seeds a default BillingConfig (ORG_PAYS_ALL, SOFT_LOCK, 7-day grace) for the KamoCRM organization during pricing loader startup. Supports the new Stripe billing...
Remove redundant translation table SQL — Hibernate ddl-auto handles them
Add translation tables for commit logs, KB articles, and subscription plans
Email as paid add-ons, not included free
- KamoMail Hosting: $5/user/mo add-on on all plans - 3rd Party Email Integration: $2/user/mo add-on on all plans - Email hosting feature reverted to "Add-on" in...
Update KamoCRM pricing to production go-to-market rates
- Starter: $34/mo ($28 annual), Business: $72/mo ($59 annual), Enterprise: from $109/mo ($99 annual) - Business plan expanded from 50 to 100 users - Added eSign...
Extend 18DOFF promotion end date to 2026-12-31
The April 14 end date was causing the offer page to show as expired.
Use List<String> instead of manual JSON strings for promotion plan/cycle IDs
Update KamoCRMPricingLoader to use List.of() for applicablePlanIds and applicableBillingCycles, matching the shared library's migration from JSON strings to ent...
Use createOrganizationOwner for admin members, rename INTERNAL to TEAM_MEMBER
Update owner creation to use new createOrganizationOwner method which handles admin role assignment and PRIVILEGED access level automatically. Replace all Image...
Add webinar type and lead market seed data for KamoCRM demo
Adds seed data initialization for the webinar scheduling system: - "KamoCRM Software Introduction Demo" webinar type (45min, PRIORITY strategy) - Reminder inter...
Drop UUID-typed customer_id/customer_group_id columns for INT8 recreation
After RetailCustomer (UUID PK) → Account (Long PK) refactor, the commerce_carts, commerce_draft_orders, and commerce_price_lists tables had customer columns wit...
Clean up CockroachDB orphan brand_id/tax_class_id defaults on commerce_offerings
CockroachDB applies unique_rowid() as default to nullable FK columns, creating orphan UUIDs that break FK constraint creation. Nullify orphans and reset default...
Remove 14-day trial from Starter and Business plans
Free plan serves as the trial experience — no need for separate trial periods on paid plans.
Remove mock subscription data from DataLoader
Remove loadMockSubscriptionData (BASIC/PRO/ENTERPRISE fake plans) from loadMockPOSData. All subscription data for KamoCRM is now exclusively managed by KamoCRMP...
KamoCRMPricingLoader looks up org by titleShort and runs from DataLoader.run()
Add KamoCRMPricingLoader with full marketing pricing model
Preloads the complete KamoCRM subscription pricing structure into the KamoCRM organization, mirroring the /pricing page on kamo-marketing: - 4 plans: Free, Sta...
Update seed data to use new subscription plan DTO fields
Replace deprecated **************** with planType, maxSeats, and description in DataLoader subscription plan seed data.
Add missing Member import and fix createMember call in DataLoader
Adds missing import for Member class and replaces non-existent memberService.createMember() with memberRepository.save() for the website-contact system member c...
Seed support topics and website-contact system member for KamoCRM org
Drop deprecated who_can_create and email_invites_enabled columns
Strip SchemaCleanupRunner to only post-Hibernate fixups
Hibernate ddl-auto: update handles all table/column creation from JPA entities. Removed all redundant CREATE TABLE/ADD COLUMN statements that duplicated what Hi...
Auto-enable all completed-stage apps for new orgs instead of hardcoded list
Replaces hardcoded feature list (which had duplicates and deprecated types) with a loop over all COMPLETED-stage, non-core, non-deprecated ServiceTypes. New app...
Migrate Everyone role to Members and create Team Members role
- Rename ROLE_EVERYONE_ID column to ROLE_MEMBER_ID - Rename existing "Everyone (Applies To All)" roles to "Members" - Set **************** flags on existing sys...
Add AI processing column and note embedding records table
Add AI_PROCESSING_ENABLED column to notes table and create NOTE_EMBEDDING_RECORDS table for tracking note RAG vectorization.
Remove RoleRightsSyncRunner — rights are added manually for existing orgs
The underlying bug in **************** (detached entity issue) has been fixed in kamo-shared-library. New rights for existing roles will be added manually via S...
