Update Notices
Upgrade to 2026.1.0
Platform Requirements
- Added support for
PHP8.5. - Removed support for
PHP8.3and Symfonyv6.
Removed ExtJS / Admin Classic UI
All legacy ExtJS-based admin controllers and frontend assets have been removed. The Admin Classic UI is no longer supported:
- Removed
src/Controller/Admin.phpand all controllers undersrc/Controller/Admin/(Activities, Customers, Duplicates, FilterDefinition, GDPRData, Helper, Rules, SegmentAssignment, Settings, Templates) - Removed
src/Controller/Report/TermSegmentBuilderController.php - Removed all ExtJS JavaScript files under
src/Resources/public/js/(startup, config, ActivityView, CustomerView, CustomerDuplicates, SegmentAssignment, targeting, gdprDataProvider, etc.) - Removed all vendor font/icon assets (FontAwesome, Glyphicons, Ionicons) from
src/Resources/public/admin/fonts/ - Removed ExtJS data and tags JS for
TermSegmentBuildercustom report definition - Removed
src/CustomReport/Adapter/TermSegmentBuilder.php(adapter no longer needed)
Removed Newsletter Bundle Dependency
- Removed hard dependency on
pimcore/newsletter-bundle. TheSegmentAddressSourceclass (src/Newsletter/AddressSource/SegmentAddressSource.php) which implementedAddressSourceAdapterInterfacefrom the newsletter bundle has been removed. If you were using this class, implement your own adapter.
GDPR Data Provider Refactoring
- Removed
CustomerManagementFrameworkBundle\GDPR\DataProvider\Customers(was undersrc/GDPR/DataProvider/Customers.php, extendingPimcore\Bundle\AdminBundle\GDPR\DataProvider\DataObjects). Replaced by the new Studio-compatible provider:- New class:
CustomerManagementFrameworkBundle\GDPR\StudioProvider\CustomerDataProvider(moved fromsrc/Gdpr/Provider/CustomerDataProvider.phpwhich was an internal class)
- New class:
- Removed
src/Routing/StudioRouteLoader.php— Studio routing is now handled viaservices.ymlconfiguration.
Studio Backend API (New)
All 45 legacy JSON admin endpoints have been migrated to modern Studio Backend API controllers. New Studio API controllers are available under src/Controller/Studio/:
- Customer: Collection, Get, View (List, Detail)
- Activity: Collection, Create, Delete, Get, Update, View (List, Detail)
- AutomationRule: Collection, Create, Delete, Get, Update
- Duplicate: Decline, View (List)
- FilterDefinition: Create, Delete, Share, Update
- Segment / SegmentGroup / SegmentAssignment: full CRUD
- Helper endpoints: ActivityTypes, CustomerFieldList, GroupedSegments, NewsletterFilterFlags
- Newsletter: EnqueueAll, GetQueueSize
- Settings: GetApiKeys, UpdateApiKey
- Customer Export: Init, Step, Download (
src/Controller/Studio/Customer/Export/) - Term Segment Builder Definitions: Collection
New interfaces and services added:
CustomerManagementFrameworkBundle\Service\Studio\Customer\Export\ExportServiceInterface— new interface for managing multi-step customer export jobsCustomerManagementFrameworkBundle\Service\Studio\Customer\View\ViewServiceInterface— now has additionalrenderCustomerDetail(int $id): stringmethod (previously onlyrenderCustomerList)
New hydrators with interfaces:
src/Hydrator/AutomationRuleHydratorInterfacesrc/Hydrator/FilterDefinitionHydratorInterfacesrc/Hydrator/HelperHydratorInterfacesrc/Hydrator/SegmentAssignmentHydratorInterfacesrc/Hydrator/TermSegmentBuilderDefinitionHydratorInterface
Studio UI Integration
- Automation Rules editor is now fully implemented in the Studio UI (React/TypeScript modules under
assets/studio/js/src/modules/automation-rules/) - Segment Assignments are now available as a tab in the Studio UI
- GDPR Data Extractor: new
DynamicTypeCustomerGDPRProviderdynamic type for the Studio GDPR module - Term Segment Builder Definition: new Studio UI adapter
- Newsletter Data Object fields (
NewsletterActive,NewsletterConfirmed) are now available as Studio class editor data types (core-extension/Pimcore/Model/DataObject/ClassDefinition/Data/)
Interface and Return Type Changes
CustomerManagementFrameworkBundle\Model\ActivityExternalIdInterface::getId()— PHPDoc return type corrected fromstring/inttostring|int(no functional change)CustomerManagementFrameworkBundle\Model\ActivityStoreEntry\ActivityStoreEntryInterface::setMetadataItem()— PHPDoc corrected: trailing semicolon removed from@return void;→@return voidCustomerManagementFrameworkBundle\CustomerList\Filter\CustomerSegment— constructor and method signatures changed:__construct(array $segments, ...)—$segmentstype hint updated fromDataObject\CustomerSegment[]toCustomerSegmentInterface[]addCustomerSegment()— parameter type changed fromDataObject\CustomerSegmenttoCustomerSegmentInterface- Internal closures updated accordingly
CustomerManagementFrameworkBundle\Filter\ExportActivitiesFilterParams—getType()andsetType()return/parameter type narrowed fromstring|booltostring;falsedefault replaced with''(empty string)CustomerManagementFrameworkBundle\ActionTrigger\RuleEnvironment— added__serialize(): arrayand__unserialize(array $data): voidmethods for PHP 8.1+ serialization interface
Other Changes
- Removed Doctrine DBAL enum type mapping configuration (deprecated)
- Added
src/Setting/SegmentAssignmentSettingsProvider.phpfor configuring segment assignment settings - Added
src/Resources/config/generic_data_index.yamlfor Generic Data Index integration
Update to Version 5.0
- CustomerManagementFrameworkBundle\Newsletter\Queue\Item/DefaultNewsletterQueueItem constructor removed default null value from $customer parameter.
Update to Version 4.1.2
- CSS includes using the
pimcore_head_linkview helper are not within a deferred block anymore. If you extend the CMFlayout.html.twigtemplate in your custom code and embed additional CSS within your templates via thepimcore_head_linktwig extension, check if they still are embedded correctly.
Update to Version 4
- Execute SQL script
src/Resources/sql/segmentAssignment/storedFunctionObject.sql, only for Pimcore 11. - Remove Single Sign On custom implementations & classes e.g.
SSOIdentity,OAuth1Token,OAuth2TokenandssoIdentitiesfield in Customer class.
Update to Version 3
- Activate
Generate Type Declarationsfor all classes generated/used by the Customer Management Framework:CustomerCustomerSegmentCustomerSegmentGroupSsoIdentity
- Migrate all templates to twig.
- Add following line to your firewalls configuration in the
security.ymlof your app after thepimcore_adminfirewall.
security:
firewalls:
pimcore_admin:
# ...
cmf_webservice: '%customer_management_framework.firewall_settings%'
- Webservices URLs changed to
/__customermanagementframework/webservice/* - Execute all migrations of Customer Management Framework.
Additional code changes (that might affect your application)
- Migrated
SearchQueryParser\QueryBuilder\ZendCompatibilitytoDoctrine\DBAL\Query\QueryBuilder. - Migrated
Zend\PaginatortoKnp\Component\Pager. FilterHandler::addFilterhas no operator as parameter anymore (as this was only considered withSearchQueryfilters). Use newBoolanCombinatorfor combining multiple filters with OR operator instead.AbstractObjectActivity::toArrayand GDPR exporter results might be different, as it utilizes newnormalizemethods instead of deprecatedgetDataForWebservicemethods.
Removed features in Version 3
- Removed
SegmentTrackedListenerfor tracking tracked segments into Piwik/Matomo (as matomo integration is deprecated in Pimcore 6.9 and removed in Pimcore X). - Migrated all templates to php templates and removed templating helpers.
- CSV Importer integration as it is also removed from Pimcore X. Use Pimcore Data Importer instead.
Update to Pimcore X
- Update to Pimcore 6.9.
- Update Customer Management Framework to latest version (compatible to Pimcore 6.9).
- Execute all migrations of Customer Management Framework.
- Update to Pimcore X.