Skip to content

Cohesivo rebranding - #3336

Merged
dabrt merged 18 commits into
6.0from
cohesivo-rebranding
Aug 6, 2026
Merged

Cohesivo rebranding#3336
dabrt merged 18 commits into
6.0from
cohesivo-rebranding

Conversation

@dabrt

@dabrt dabrt commented Jul 31, 2026

Copy link
Copy Markdown
Contributor
Question Answer
JIRA Ticket N/A
Versions 6.0
Edition All

Rebrand features and the main product according to a new naming scheme:
Engage -> Qualifio
CDP -> Raptor
PIM -> Quable
Ibexa DXP -> Cohesivo

I am leaving a few things as-is on purpose:

  • Add Image Asset from Digital Asset Management article
  • Product edition names remain the same until further notice
  • Product catalog remains the same until further notice

NOTES:

  • Ibexa DXP PHP Storm plugin description received only a partial makeover, waiting for Adam's decisions
  • Link checker will fail until user doc PR is merged.
  • Some diagrams have invalid source, I'd need to recreate them.

Checklist

  • Text renders correctly
  • Text has been checked with vale
  • Description metadata is up to date
  • Redirects cover removed/moved pages

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

Preview of modified files: Too many files modified in a single PR, preview link list is skipped. (159 files > 150)

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

Summary

Status Count
🔍 Total 736693
🔗 Unique 14795
✅ Successful 6196
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 730493
❓ Unknown 0
🚫 Errors 4
⛔ Unsupported 0

Errors per input

Errors in site/ibexa_products/editions/index.html

  • [ERROR] file:///home/runner/work/documentation-developer/documentation-developer/repositories/userdoc-6.0/site/qualifio/qualifio/index.html (at 14392:14) | File not found. Check if file exists and path is correct

Errors in site/qualifio/create_campaign/index.html

  • [ERROR] file:///home/runner/work/documentation-developer/documentation-developer/repositories/userdoc-6.0/site/qualifio/qualifio/index.html#campaign (at 14190:13) | File not found. Check if file exists and path is correct
  • [ERROR] file:///home/runner/work/documentation-developer/documentation-developer/repositories/userdoc-6.0/site/qualifio/qualifio/index.html#publication-channel (at 14199:63) | File not found. Check if file exists and path is correct

Errors in site/qualifio/install_qualifio/index.html

  • [ERROR] file:///home/runner/work/documentation-developer/documentation-developer/repositories/userdoc-6.0/site/qualifio/qualifio/index.html#request-access (at 14197:39) | File not found. Check if file exists and path is correct

Full Github Actions output

@dabrt
dabrt marked this pull request as ready for review August 4, 2026 10:25

@mnocon mnocon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Human review

This is a great start and thank you for preparing this.
To avoid growing this PR and constantly getting conflicts when something changes, I'm ok with merging this as-is and adding additional changes in follow-up PRs.

Besides the comments added inline, please review product_name_base usages - it still results in "Ibexa AI Actions", "Ibexa Messenger" or "Ibexa Rector", which I guess we'll rename to Cohesivo Messenger/Cohesivo Rector (but please verify this first).

AI review

I've asked to Claude to review these changes, and reviewed the output - here are the (real) issues it found (I've filtered out the false-positives already)

Issue 1

docs/administration/project_organization/project_organization.md:2 — grammar
description: An Cohesivo project follows Symfony's directory structure...

Plus 16 live "an [[= product_name =]]" occurrences that the rename silently broke ("Cohesivo" takes a, not an). Representative: architecture.md:10,23,
api/rest_api/rest_api_usage/rest_api_usage.md:7, ibexa_products/ibexa_experience.md:10,
getting_started/install_with_ddev.md:420,437, resources/contributing/report_and_follow_issues.md:7,
tutorials/beginner_tutorial/beginner_tutorial.md:7. Find with:

grep -rn "an [[= product_name =]]" --include="*.md" docs/

Issue 2

Leftover bare "DXP" — 9c9957b converted the DXP → the [[= product_name =]] in several files but missed:

docs/ibexa_products/ibexa_headless.md:153 — "use the DXP as the authentication service"

Note that commit's own conversions read awkwardly, because "the" was correct before the macro and isn't now: infrastructure_and_maintenance/backup.md:9 "shut down the Cohesivo",
security/security_checklist.md:120 "what version of the Cohesivo is running", recommendations/raptor_integration/connector_installation_configuration.md:37 (twice). Drop the article in these.

Issue 3

Historical accuracy — docs/update_and_migration/**
Commit d8d1bba hardcoded docs/release_notes/** and docs/resources/phpstorm_plugin.md but
skipped update_and_migration/ entirely. The result is the same fact branded two ways: this branch set release_notes/ibexa_dxp_v3.3.md:23 to "Ibexa DXP is now installed using Symfony Flex", while
update_and_migration/from_2.5/to_3.3.md:13 still renders "Cohesivo v3.3 uses Symfony Flex".

Replace [[= product_name =]] with literal Ibexa DXP where the sentence is scoped to ≤ 5.0:

update_to_5.0.md:32 and :447 matter extra — their link labels currently render "Cohesivo v4.0/v5.0
deprecations…" while the target pages' H1s were hardcoded to "Ibexa DXP v…", so label and destination
sagree.

Also pre-existing but now visible: docs/update_and_migration/from_4.3/update_from_4.3.md:9 has a
missing space — in[[= product_name =]] → "inCohesivo".

Issue 4

  1. Same diagram, two brandings. docs/ibexa_products/img/cdp.png was regenerated (71,821 bytes,
    shows "Cohesivo"). docs/raptor_cdp/img/raptor_cdp_how_works.png is a byte-identical rename of the
    old file (103,388 bytes, still shows "IBEXA DXP") — and it's the one displayed on
    docs/raptor_cdp/raptor_cdp_guide.md:30. Verified by md5: the two files differ.

Issue 5

  1. docs/product_catalog/img/diagrams_source/remote_pim_support.xml — IBEXA DXP at lines 38,
    50, 95. docs/product_catalog/img/ got zero changes; the rendered PNG is embedded at docs/product_catalog/product_catalog_guide.md:166.

Issue 6

  1. docs/ibexa_products/img/ibexa_engage.drawio not renamed alongside its export
    (ibexa_engage.png → qualifio.png). It's the only source/output name mismatch in that directory.

Issue 7

  1. Generated file hand-patched, template not. 9c9957b edited
    docs/api/php_api/php_api_reference/index.html:49672 to "Cohesivo's public PHP API…", but tools/api_refs/.phpdoc/template/index.html.twig:8 still says "Ibexa DXP's public PHP API…". Verified
    both. The next tools/api_refs/api_refs.sh run reverts the fix. Fix the template.

Issue 8

  1. plugins.yml — llms.txt output still says Ibexa DXP. This is the agent-facing description of
    the 6.0 docs (base_url: https://doc.ibexa.co/en/6.0/ at :639):
  • :634 — "Developer documentation for Ibexa DXP — architecture, APIs, templating, and extensibility
    for building and customizing Ibexa DXP projects." (two occurrences)
  • :644 — section key Ibexa DXP developer documentation:

Issue 9

  1. theme/partials/eol_warning.html:3 — hardcoded
    https://doc.ibexa.co/en/latest/update_and_migration/update_ibexa_dxp/. The page is now
    update_system.md; survives only as a double hop via plugins.yml:524. Renders on every EOL page.

Issue 10

mkdocs.yml:930 — nav group Migrate to Ibexa DXP: while this branch changed
docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md:2 to "…updating from earlier
version to Cohesivo". One of the two is wrong; the migration target is 6.0, so the nav label
should change (directory name stays).

My comment: this is for sure for a follow-up.
For example, https://ez-systems-developer-documentation--3336.com.readthedocs.build/en/3336/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform/ contains the following sentence:

eZ Publish Platform (5.x) was a transitional version of the Ibexa CMS, bridging the gap between the earlier generation called eZ Publish (sometimes referred to as legacy), and eZ Platform, the predecessor to Cohesivo.

Which needs to be rewritten.

Comment thread docs/ibexa_cloud/ibexa_cloud_guide.md Outdated
Comment thread docs/product_catalog/quable/install_quable.md Outdated
Comment thread docs/product_catalog/catalogs.md
Comment thread mkdocs.yml
Comment thread mkdocs.yml
Comment thread docs/recommendations/raptor_integration/hybrid_tracking.md Outdated
Comment thread mkdocs.yml
Comment thread docs/recommendations/raptor_integration/hybrid_tracking.md
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

code_samples/ change report

Before (on target branch)After (in current PR)

code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml


code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml


code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml

docs/ibexa_engage/install_ibexa_engage.md@42:``` yaml
docs/ibexa_engage/install_ibexa_engage.md@43:[[= include_file('code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml') =]]
docs/ibexa_engage/install_ibexa_engage.md@44:```
docs/qualifio/install_qualifio.md@42:``` yaml
docs/qualifio/install_qualifio.md@43:[[= include_file('code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml') =]]
docs/qualifio/install_qualifio.md@44:```

001⫶ibexa_connector_qualifio:
002⫶ client_id: 1234
003⫶ channel: 'd882c3f1-1b05-48c8-bc1d-c11a45e2c23a'
004⫶ feed_url: 'https://api.qualif.io/v1/campaignfeed/channels/d882c3f1-1b05-48c8-bc1d-c11a45e2c23a/json?clientId=1234'
005⫶ variable_map:
006⫶ form:
007⫶ shipping_address:
008⫶ first_name: 'firstname'
009⫶ last_name: 'lastname'
010⫶ email: 'email'
011⫶ street: 'address'
012⫶ postal_code: 'zip_code'
013⫶ locality: 'locality'
014⫶ country: 'country'
015⫶ phone_number: 'phone'
016⫶ billing_address:
017⫶ first_name: 'firstname'
018⫶ last_name: 'lastname'
019⫶ email: 'email'
020⫶ street: 'address'
021⫶ postal_code: 'zip_code'
022⫶ locality: 'locality'
023⫶ country: 'country'
024⫶ phone_number: 'phone'
025⫶ content:
026⫶ birthday: 'birthday'
027⫶ first_name: 'firstname'
028⫶ last_name: 'lastname'
029⫶ company: 'company'
030⫶ position: 'position'
031⫶ phone: 'phone'
032⫶ gender: 'gender'
033⫶ account:
034⫶ name: 'name'
035⫶ email: 'email'
036⫶ id: 'userid'
037⫶ remote_id: 'identifier'
038⫶ login: 'login'



001⫶ibexa_connector_qualifio:
002⫶ client_id: 1234
003⫶ channel: 'd882c3f1-1b05-48c8-bc1d-c11a45e2c23a'
004⫶ feed_url: 'https://api.qualif.io/v1/campaignfeed/channels/d882c3f1-1b05-48c8-bc1d-c11a45e2c23a/json?clientId=1234'
005⫶ variable_map:
006⫶ form:
007⫶ shipping_address:
008⫶ first_name: 'firstname'
009⫶ last_name: 'lastname'
010⫶ email: 'email'
011⫶ street: 'address'
012⫶ postal_code: 'zip_code'
013⫶ locality: 'locality'
014⫶ country: 'country'
015⫶ phone_number: 'phone'
016⫶ billing_address:
017⫶ first_name: 'firstname'
018⫶ last_name: 'lastname'
019⫶ email: 'email'
020⫶ street: 'address'
021⫶ postal_code: 'zip_code'
022⫶ locality: 'locality'
023⫶ country: 'country'
024⫶ phone_number: 'phone'
025⫶ content:
026⫶ birthday: 'birthday'
027⫶ first_name: 'firstname'
028⫶ last_name: 'lastname'
029⫶ company: 'company'
030⫶ position: 'position'
031⫶ phone: 'phone'
032⫶ gender: 'gender'
033⫶ account:
034⫶ name: 'name'
035⫶ email: 'email'
036⫶ id: 'userid'
037⫶ remote_id: 'identifier'
038⫶ login: 'login'


code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php
code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml




code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php
code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php


docs/cdp/cdp_data_customization.md@22:``` php
docs/cdp/cdp_data_customization.md@23:[[= include_code('code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php') =]]
docs/cdp/cdp_data_customization.md@24:```
docs/raptor_cdp/raptor_cdp_data_customization.md@22:``` php
docs/raptor_cdp/raptor_cdp_data_customization.md@23:[[= include_code('code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php') =]]
docs/raptor_cdp/raptor_cdp_data_customization.md@24:```

001⫶<?php declare(strict_types=1);
002⫶
003⫶namespace App\Export\User;
004⫶
005⫶use Ibexa\Contracts\Cdp\Export\User\AbstractUserItemProcessor;
006⫶use Ibexa\Contracts\Core\Repository\Values\Content\Content;
007⫶use Ibexa\Core\FieldType\Date\Value as DateValue;
008⫶use InvalidArgumentException;
009⫶
010⫶final class DateOfBirthUserItemProcessor extends AbstractUserItemProcessor
011⫶{
012⫶ public function __construct(
013⫶ private readonly string $dateOfBirthFieldIdentifier,
014⫶ string $userFieldTypeIdentifier
015⫶ ) {
016⫶ parent::__construct($userFieldTypeIdentifier);
017⫶ }
018⫶
019⫶ protected function doProcess(array $processedItemData, Content $userContent): array
020⫶ {
021⫶ $userField = $this->getUserField($userContent);
022⫶
023⫶ if (null === $userField) {
024⫶ throw new InvalidArgumentException('Content does not contain user field');
025⫶ }
026⫶
027⫶ $dateOfBirth = '';
028⫶ $dateOfBirthField = $userContent->getField($this->dateOfBirthFieldIdentifier);
029⫶
030⫶ if ($dateOfBirthField !== null
031⫶ && $dateOfBirthField->value instanceof DateValue
032⫶ && $dateOfBirthField->value->date !== null
033⫶ ) {
034⫶ $dateOfBirth = $dateOfBirthField->value->date->format('Y-m-d');
035⫶ }
036⫶
037⫶ return array_merge(
038⫶ $processedItemData,
039⫶ [
040⫶ 'date_of_birth' => $dateOfBirth,
041⫶ ]
042⫶ );
043⫶ }
044⫶}


001⫶<?php declare(strict_types=1);
002⫶
003⫶namespace App\Export\User;
004⫶
005⫶use Ibexa\Contracts\Cdp\Export\User\AbstractUserItemProcessor;
006⫶use Ibexa\Contracts\Core\Repository\Values\Content\Content;
007⫶use Ibexa\Core\FieldType\Date\Value as DateValue;
008⫶use InvalidArgumentException;
009⫶
010⫶final class DateOfBirthUserItemProcessor extends AbstractUserItemProcessor
011⫶{
012⫶ public function __construct(
013⫶ private readonly string $dateOfBirthFieldIdentifier,
014⫶ string $userFieldTypeIdentifier
015⫶ ) {
016⫶ parent::__construct($userFieldTypeIdentifier);
017⫶ }
018⫶
019⫶ protected function doProcess(array $processedItemData, Content $userContent): array
020⫶ {
021⫶ $userField = $this->getUserField($userContent);
022⫶
023⫶ if (null === $userField) {
024⫶ throw new InvalidArgumentException('Content does not contain user field');
025⫶ }
026⫶
027⫶ $dateOfBirth = '';
028⫶ $dateOfBirthField = $userContent->getField($this->dateOfBirthFieldIdentifier);
029⫶
030⫶ if ($dateOfBirthField !== null
031⫶ && $dateOfBirthField->value instanceof DateValue
032⫶ && $dateOfBirthField->value->date !== null
033⫶ ) {
034⫶ $dateOfBirth = $dateOfBirthField->value->date->format('Y-m-d');
035⫶ }
036⫶
037⫶ return array_merge(
038⫶ $processedItemData,
039⫶ [
040⫶ 'date_of_birth' => $dateOfBirth,
041⫶ ]
042⫶ );
043⫶ }
044⫶}


code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php

Download colorized diff

@dabrt
dabrt requested a review from mnocon August 6, 2026 11:18

@mnocon mnocon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@dabrt
dabrt merged commit cb18562 into 6.0 Aug 6, 2026
10 of 13 checks passed
@dabrt
dabrt deleted the cohesivo-rebranding branch August 6, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants