From eafc0845f0eab9baa6bea5239905eabfae235f25 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 21 Oct 2025 17:52:06 +0200 Subject: [PATCH 1/7] Add details of Examine customization breaking change in Umbraco 16 --- .../setup/upgrading/version-specific/README.md | 8 ++++++++ .../setup/upgrading/version-specific/README.md | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 16706f869fc..9f1b3b4dcfb 100644 --- a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -35,6 +35,14 @@ To continue to use TinyMCE, a third-party package must be installed prior to the Umbraco 16 adds support for asynchronous migrations and part of this work involved creating a new base class for package migrations. This leads to a source-compatible but binary-incompatible breaking change. In practice, this means that package code using migrations and calling base class helper methods such as `TableExists` can be recompiled without change. But if built against 15 and run on 16, a "method missing" exception will be thrown. For more details on the feature and the changes implemented, see the [PR](https://github.com/umbraco/Umbraco-CMS/pull/17057). +**Examine is now registered via a composer** + +[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. + +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Umbraco. + +Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. + **Updated dependencies** As is usual for a major upgrade, the dependencies Umbraco takes have been updated to their latest, compatible versions. This had little impact on the code of Umbraco itself, so we don't expect this to affect upgraded customer projects. diff --git a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index b35cfb21fe3..74e81a03f53 100644 --- a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -203,6 +203,14 @@ To continue to use TinyMCE, a third-party package must be installed prior to the Umbraco 16 adds support for asynchronous migrations and part of this work involved creating a new base class for package migrations. This leads to a source-compatible but binary-incompatible breaking change. In practice, this means that package code using migrations and calling base class helper methods such as `TableExists` can be recompiled without change. But if built against 15 and run on 16, a "method missing" exception will be thrown. For more details on the feature and the changes implemented, see the [PR](https://github.com/umbraco/Umbraco-CMS/pull/17057). +**Examine is now registered via a composer** + +[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. + +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Umbraco. + +Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. + **Updated dependencies** As is usual for a major upgrade, the dependencies Umbraco takes have been updated to their latest, compatible versions. This had little impact on the code of Umbraco itself, so we don't expect this to affect upgraded customer projects. From bef6f084ff2e62b3f8285113d86511dc6edf97ef Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 21 Oct 2025 17:54:15 +0200 Subject: [PATCH 2/7] Fix --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 9f1b3b4dcfb..68bab0f3015 100644 --- a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -39,7 +39,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Umbraco. +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. diff --git a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 74e81a03f53..294605aa012 100644 --- a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -207,7 +207,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Umbraco. +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. From e628cd190615ec2fc26c0dcc4f51bab2a1ed10e3 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 21 Oct 2025 17:57:32 +0200 Subject: [PATCH 3/7] Linting --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 68bab0f3015..60f6615229e 100644 --- a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -39,7 +39,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. diff --git a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 294605aa012..0f92a6c4609 100644 --- a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -207,7 +207,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code also registered in a composer can no longer be guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. +There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. From 6c94b55ff557cad26d59e2f6393997d53a36c489 Mon Sep 17 00:00:00 2001 From: Esha Noronha <82437098+eshanrnh@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:34:10 +0200 Subject: [PATCH 4/7] Update 16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 60f6615229e..259499cdfbb 100644 --- a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -37,7 +37,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv **Examine is now registered via a composer** -[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. +[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, a method has been implemented to disable the default Examine-based search in Umbraco. This has required moving the Examine component registration to a composer. There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. From 709757a2bc74b824d8acf8a5faae6c8c4db8efd4 Mon Sep 17 00:00:00 2001 From: Esha Noronha <82437098+eshanrnh@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:34:20 +0200 Subject: [PATCH 5/7] Update 16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 259499cdfbb..c4574ee887d 100644 --- a/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/16/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -39,7 +39,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, a method has been implemented to disable the default Examine-based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. +There is no effect on the default search experience in Umbraco, but it may affect search customizations. As Examine is now registered in a composer, any custom code registered the same way is not guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after Umbraco's default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference. From a146b2badfc772ce3dcc15b00427ff65fa0ed1f6 Mon Sep 17 00:00:00 2001 From: Esha Noronha <82437098+eshanrnh@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:34:27 +0200 Subject: [PATCH 6/7] Update 17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 0f92a6c4609..23b8ef896ff 100644 --- a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -205,7 +205,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv **Examine is now registered via a composer** -[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, we have implemented a means of disabling the default Examine based search in Umbraco. This has required moving the Examine component registration to a composer. +[A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, a method has been implemented to disable the default Examine-based search in Umbraco. This has required moving the Examine component registration to a composer. There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. From 17f28f4020116d5be7cfa76f8421cdf334539f3a Mon Sep 17 00:00:00 2001 From: Esha Noronha <82437098+eshanrnh@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:34:34 +0200 Subject: [PATCH 7/7] Update 17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md --- .../fundamentals/setup/upgrading/version-specific/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 23b8ef896ff..0a3f53b5ee5 100644 --- a/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -207,7 +207,7 @@ Umbraco 16 adds support for asynchronous migrations and part of this work involv [A new abstraction and implementation for search](https://github.com/umbraco/Umbraco.Cms.Search) is being worked on in an external package. To support this, a method has been implemented to disable the default Examine-based search in Umbraco. This has required moving the Examine component registration to a composer. -There is no effect on the default search experience with Umbraco but it has a potential impact on search customizations. As Examine is now registered in a composer, any customizing code similarly registered is no longer guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after the Umbraco default setup of Examine. +There is no effect on the default search experience in Umbraco, but it may affect search customizations. As Examine is now registered in a composer, any custom code registered the same way is not guaranteed to run after the core setup. You should ensure to use a `[ComposeAfter(typeof(Umbraco.Cms.Infrastructure.Examine.AddExamineComposer))]` attribute to make sure custom code runs after Umbraco's default setup of Examine. Read more in the article on [custom indexing](../../../../reference/searching/examine/indexing.md) and see [PR #18988](https://github.com/umbraco/Umbraco-CMS/pull/18988) for reference.