diff --git a/site/docs/types/6/0610-Annotations.md b/site/docs/types/6/0610-Annotations.md
index d78013f380..2ed9ec52fd 100644
--- a/site/docs/types/6/0610-Annotations.md
+++ b/site/docs/types/6/0610-Annotations.md
@@ -17,7 +17,7 @@ for capturing analysis from third-party tools.
## Annotation entity
-The *Annotation* entity inherits from [*OpenMetadataRoot*](/types/0/0010-Base-Model) and adds the following attributes:
+The *Annotation* entity inherits from [*AuthoredReferenceable*](/types/0/0010-Base-Model) and adds the following attributes:
* *annotationType* - descriptive string that acts as an identifier for the specific annotation type. This is a simple means to sub-type any one of the annotation subclasses.
* *summary* - a human-readable string to describe the annotation.
@@ -57,7 +57,7 @@ The *DataFieldAnnotation* type is used as a marker to indicate that the annotati
## ReportedAnnotation relationship
-The *ReportedAnnotation* relationship links an annotation to the [*SurveyReport*](/types/6/0603-Survey-Reports) entity. It is used with [survey action services](/concepts/survey-action-service).
+The *ReportedAnnotation* relationship links an annotation to the [*SurveyReport*](/types/6/0603-Survey-Reports) entities. It is used with [survey action services](/concepts/survey-action-service). The annotation is created on the first run on the survey that discovers the fact it contains. If subsequent surveys discover that the values have not changed, a new *ReportedAnnotation* relationship is linked between the new survey report and the existing annotation. This relationship identifies when the annotation was true.
## AssociatedAnnotation relationship
diff --git a/site/docs/types/6/0610-Annotations.svg b/site/docs/types/6/0610-Annotations.svg
index df370184f0..afc1e2a829 100644
--- a/site/docs/types/6/0610-Annotations.svg
+++ b/site/docs/types/6/0610-Annotations.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/site/docs/types/6/area-6-discovery.drawio b/site/docs/types/6/area-6-discovery.drawio
index b02f506349..e38fbd1a65 100644
--- a/site/docs/types/6/area-6-discovery.drawio
+++ b/site/docs/types/6/area-6-discovery.drawio
@@ -143,10 +143,10 @@
-
+
-
+
diff --git a/site/snippets/release-notes/6-2.md b/site/snippets/release-notes/6-2.md
index 49be61359c..40ca9d69ce 100644
--- a/site/snippets/release-notes/6-2.md
+++ b/site/snippets/release-notes/6-2.md
@@ -1,13 +1,11 @@
-## Release 6.2 (expected October 2026)
-
-_**These are DRAFT release notes. The notes will be updated until and when 6.2 is released**_
+## Release 6.2 (October 2026)
Release 6.2 brings Egeria's support for data products and data contracts up to the open standards used by the teams that build them, with support for the Bitol Open Data Contract Standard (ODCS) and Open Data Product Standard (ODPS) and an upgrade to the current OpenLineage specification. New nanny connectors maintain the [data mesh](/concepts/data-mesh) from the lineage beneath it (Darwin) and resolve duplicate metadata (Mendel), and the Open Metadata Digital Product Catalog now delivers data to its subscribers end to end, with lineage.
-Much of the work in this release has gone into testing. Seventeen functional verification test suites now exercise the platform, its connectors and its content packs, and the many defects they found have been fixed. The build has also moved to Java 21, Gradle 9 and Spring Boot 3.5, so check the [upgrade notes](#upgrade-notes) at the end before moving to this release.
+Much of the work in this release has gone into testing. Eighteen functional verification test suites now exercise the platform, its connectors and its content packs, and the many defects they found have been fixed. The build has also moved to Java 21, Gradle 9 and Spring Boot 3.5, so check the [upgrade notes](#upgrade-notes) at the end before moving to this release.
### Details of this release
@@ -35,6 +33,7 @@ Much of the work in this release has gone into testing. Seventeen functional ve
* On [*NotificationType*](/types/4/0451-Notifications), *notificationInterval* is deprecated in favour of *minimumNotificationInterval* (in minutes) and *nextScheduledNotification*. The *ContentStatus* enumeration has a new value, *OBSOLETE*.
* New *ResourceUse* valid values called *Naming Standards* and *Bitol Document*.
* Every type in the open metadata type system has been compared with its documentation and the drift resolved - see the *Changes to the open metadata types* entry in the [upgrade notes](#upgrade-notes) below.
+ * The [*ReportedAnnotation*](/types/6/0610-Annotations) relationship now allows many survey reports at its *fromSurveyReports* end, so an annotation can be linked to every survey report that found it to be true - see *Surveys reuse their annotations* below.
??? functional "Support for the Bitol Open Data Contract Standard (ODCS) and Open Data Product Standard (ODPS)"
Egeria can now exchange data contracts and data product descriptors with the teams that keep them in git, using the [Bitol](https://bitol.io) open standards. See [digital product management](/features/digital-product-management/overview) for the mapping to open metadata.
@@ -55,6 +54,8 @@ Much of the work in this release has gone into testing. Seventeen functional ve
* **Publishing events.** Governance action runs are published with spec-conformant dataset names built from their action targets, provisioning outputs are published as outputs, and two [custom Egeria run facets](/openlineage/facets) - *egeria_governanceAction* and *egeria_informationSupplyChain* - carry the information supply chain and governance action details.
* **Analysis.** Three new Lovelace governance action services - *Profile OpenLineage Runs*, *Refine OpenLineage Data Scope* and *Summarise OpenLineage Data Quality* - summarise the lineage captured.
* New technology types describe the tables of PostgreSQL, MS SQL Server, Oracle and Db2 LUW databases, together with data warehouses, NoSQL stores, file stores, document management systems, event streams and data pipelines, so that resources first seen through OpenLineage can be catalogued from templates.
+ * Cataloguing is faster: the resolver caches the endpoints, connections and assets it walks to match a dataset, the queries it makes ask the repository for only the relationship types they need, and the PostgreSQL repository serves an "or" of property conditions with a single indexed query.
+ * An event published just as a Kafka topic consumer started could be lost; the consumer now starts reading from the end of the topic as it was before it looked for earlier events.
* A new functional verification test suite, *openlineage-fvt*, exercises the cataloguer.
??? functional "New Connector: Darwin Product Dependency Manager"
@@ -87,6 +88,24 @@ Much of the work in this release has gone into testing. Seventeen functional ve
??? functional "Liskov Data Sharing Hub Manager builds the data dictionary"
The [Liskov Data Sharing Hub Manager](/patterns/harvest-and-publish/overview) now actively improves the descriptions of the members of a data sharing hub, enabling their cataloguing and requesting surveys of them (see the new *excludedSurveyRequestTypes* configuration property). It populates the hub's data dictionary from CSV files and database schemas - it had never been able to - with one data structure per database table, and links each *DataField* and *DataStructure* to the schema element it was derived from using an *ImplementedBy* relationship with *designStep* set to *data-abstraction*. Database schemas are now accepted as hub members.
+ Liskov no longer surveys every member on every refresh. A member that has never been surveyed is surveyed straight away; after that, the interval between surveys starts at one day, grows by a day each time a survey finds nothing has changed, up to seven days, and drops back to one day when a change is found. The limits are set with the new *minimumSurveyIntervalDays* and *maximumSurveyIntervalDays* configuration properties. *excludedSurveyRequestTypes* - like every array configuration property and request parameter - now accepts a list, an array or a comma-separated string.
+
+??? functional "Surveys reuse their annotations"
+ Surveying a resource that has not changed no longer adds a new set of annotations each time. An annotation is now anchored to the surveyed asset and reused by every later survey that finds the same thing: it is linked to each survey report that reported it through the *ReportedAnnotation* relationship, which now allows many reports (see the [upgrade notes](#upgrade-notes) for the API change). The annotations are removed when the asset is deleted, not when a report is. Duplicate annotations left by surveys from an earlier release are merged into the oldest of them the next time the asset is surveyed.
+
+ * The PostgreSQL, MS SQL Server, Oracle, Db2 LUW, DuckDB and Unity Catalog surveys can be limited to some of the schemas they find, with the new *includeSchemaNames* and *excludeSchemaNames* configuration properties, or request parameters of the same names that override them.
+ * Each survey's resource profile log file is now linked to its *ResourceProfileLogAnnotation* through the *ResourceProfileData* relationship, and the annotation's *resourceProfileLogGUIDs* are filled in when it is read back.
+ * The *Delete Asset* governance action service can now delete an asset whose contents an integration connector has synchronized into open metadata; it was refused permission to remove the synchronized elements.
+ * A new functional verification test suite, *unity-catalog-fvt*, exercises the Unity Catalog survey and synchronization connectors.
+
+??? functional "Content packs can be rebuilt reproducibly"
+ Rebuilding a content pack without changing its content now reproduces it exactly, and a repository reloading a rebuilt pack only replaces the elements that have changed. Previously every rebuild gave every element a new version, stamped some values with the build time, and could even write the fields in a different order.
+
+ * Elements and types that have not changed since the previous edition of an archive keep their previous version.
+ * Archives are written with their properties in alphabetical order, so the same content always produces the same file.
+ * The metadata collection that describes each content pack now has an *identifier* of `:`, for example `CoreContentPack:6.2`.
+ * All the content packs have been regenerated. They now record the current version of the types that have been patched in this release, and maps nested in connection configuration properties are stored as maps.
+
??? functional "Information supply chain diagrams show deployment status"
The [information supply chain](/concepts/information-supply-chain) mermaid graph has a new *Status* area that shows how far each solution component has progressed, from its *deploymentStatus* and any *Promise* classification, and the systems now have their own *System Fabric* area alongside the *Data Fabric*. Elements that are not solution components are now shown too. A new sample, *SAMPLE Information Supply Chain - Deployment Status Demonstration*, is included in the Core Content Pack.
@@ -124,13 +143,17 @@ Much of the work in this release has gone into testing. Seventeen functional ve
* The counting operations have a new *pushDown* option, so a caller that needs the count to agree with the list can ask for that.
* A string property containing a single quote gained an extra pair of quotes every time it was stored in the PostgreSQL repository; backslashes and LIKE patterns also failed. These are fixed, but values corrupted by an earlier release are not repaired.
* *findEntitiesByPropertyValue* now honours its *startsWith*, *endsWith* and *ignoreCase* flags, and a federated cohort works again when a secrets store is configured.
- * Survey annotations are now anchored to their survey report, so deleting a report removes its annotations. The delete cascade now follows anchors transitively and no longer stops after the first hundred elements.
+ * The delete cascade now follows anchors transitively and no longer stops after the first hundred elements.
+ * Deleting an asset that lineage relationships point at archives it rather than deleting it. This failed part-way for an asset with anchored elements, such as its connection and endpoint, leaving some of them archived and the rest live. The archive now finds everything to archive before changing anything, and also renames the asset's qualified name, which it previously left unchanged. An archive left half-done by an earlier release can be finished by repeating the delete.
+ * Relationships requested in a particular order are now returned in that order; they were returned in an arbitrary order. The relationships of an element are returned most recently created first.
+ * Lists, maps and other values held in a *map* property, such as catalog target configuration properties or *extendedProperties*, are now stored and read back intact.
+ * In the PostgreSQL repository, a map whose keys contain a colon, such as `tag:coco`, is now stored and read back correctly.
??? functional "Messages and codes"
- Egeria can produce 1517 distinct messages - the text of its exceptions, its audit log records and its notifications - and they are now published as a browsable set of pages in the [messages-and-codes](https://github.com/odpi/egeria/tree/main/messages-and-codes) directory of the egeria repository. Each message now carries a link to the page that explains the component behind it: it is returned as *messageURL* on audit log records, *reportedURL* on exceptions and *exceptionURL* on REST responses, and printed by the console audit log. The PostgreSQL audit log store adds a *message_url* column automatically. Messages that nothing raises any more have been removed.
+ Egeria can produce 1655 distinct messages - the text of its exceptions, its audit log records and its notifications - and they are now published as a browsable set of pages in the [messages-and-codes](https://github.com/odpi/egeria/tree/main/messages-and-codes) directory of the egeria repository. Each message now carries a link to the page that explains the component behind it: it is returned as *messageURL* on audit log records, *reportedURL* on exceptions and *exceptionURL* on REST responses, and printed by the console audit log. The PostgreSQL audit log store adds a *message_url* column automatically. Messages that nothing raises any more have been removed.
??? functional "New test suites"
- Seventeen opt-in functional verification test suites now cover the platform, its connectors and its content packs: *auth-fvt*, *bitol-fvt*, *client-fvt*, *cts-fvt*, *darwin-fvt*, *duplicate-fvt*, *files-fvt*, *openlineage-fvt*, *platform-catalog-fvt*, *postgres-fvt*, *query-fvt*, *security-fvt*, *server-fvt*, *subscription-fvt*, *tabular-data-fvt*, *templates-fvt* and *type-fvt*. Each is run with its own flag, for example `./gradlew :open-metadata-test:open-metadata-fvt:files-fvt:test -PrunFilesFvt` - see [testing](/guides/contributor/testing). The *cts-fvt* suite runs the [Conformance Test Suite](/guides/cts) against both of Egeria's own repositories, which it had not been run against since the runtime was restructured.
+ Eighteen opt-in functional verification test suites now cover the platform, its connectors and its content packs: *auth-fvt*, *bitol-fvt*, *client-fvt*, *cts-fvt*, *darwin-fvt*, *duplicate-fvt*, *files-fvt*, *openlineage-fvt*, *platform-catalog-fvt*, *postgres-fvt*, *query-fvt*, *security-fvt*, *server-fvt*, *subscription-fvt*, *tabular-data-fvt*, *templates-fvt*, *type-fvt* and *unity-catalog-fvt*. Each is run with its own flag, for example `./gradlew :open-metadata-test:open-metadata-fvt:files-fvt:test -PrunFilesFvt` - see [testing](/guides/contributor/testing). The *cts-fvt* suite runs the [Conformance Test Suite](/guides/cts) against both of Egeria's own repositories, which it had not been run against since the runtime was restructured.
The defects the suites found are fixed in this release. Those that users are most likely to have met:
@@ -146,6 +169,11 @@ Much of the work in this release has gone into testing. Seventeen functional ve
* Integration connectors that send metadata to a third party registered their listener again on every refresh, so they received duplicate events.
* The in-memory repository dropped classifications that a content pack added to an existing element, such as *Promise*.
* Several admin and operations client methods called endpoints that had moved, and returned 404.
+ * A server could deadlock while shutting down if an event arrived at the same moment, and the shutdown request never returned. This affected engine hosts and the clients of the governance and open metadata out topics.
+ * An engine action could be claimed, and run, twice.
+ * An engine action whose action target the engine's user was not allowed to read stopped the engine host's sweep for missed engine actions, which then failed every five seconds. Lists of engine actions now leave out any that the caller cannot read in full, and the sweep asks only for the approved actions of its own engine.
+ * Saving or deleting a client-side secret reported success without doing anything when the secrets store was not a YAML secrets file.
+ * The Babbage Analytical Engine passed no request parameters to the governance actions it started; it now passes its catalog target's configuration properties. The Lovelace OpenLineage analysis services failed when no log store directory was supplied; they now default to `logs/openlineage`, where the OpenLineage file publisher writes by default.
* In the *OpenMetadataAccessSecurityConnector*, the *instanceOwner* dynamic group admitted every user, and a connection could be returned to a caller that was not authorized to read it. Reading a server's configuration document now needs an investigator rather than an operator.
??? functional "Configurable bearer token timeout"
@@ -192,7 +220,7 @@ Much of the work in this release has gone into testing. Seventeen functional ve
??? warning "Java 21, Gradle 9 and Spring Boot 3.5"
Egeria is now built for **Java 21** (it was Java 17), with **Gradle 9.7.1** (was 8.1.1) and **Spring Boot 3.5.16** (was 3.1.4). The platform container image is now based on `ubi9/openjdk-21`. You need a Java 21 runtime to run the OMAG Server Platform, and a Java 21 JDK to build Egeria or code that compiles against its libraries.
- * The Egeria bill of materials now imports the Spring Boot BOM rather than pinning Spring versions by hand, so consumers of the BOM receive Boot-managed versions. Third-party constraints that nothing used have been removed, including the jjwt libraries. Other notable moves are Jackson 2.22.2 and Logback 1.6.3.
+ * The Egeria bill of materials now imports the Spring Boot BOM rather than pinning Spring versions by hand, so consumers of the BOM receive Boot-managed versions. Third-party constraints that nothing used have been removed, including the jjwt libraries. Other notable moves are Jackson 2.22.3 and Logback 1.6.5. The Redis client libraries, which nothing used, are no longer included.
* Java serialization has been retired from the transport beans: they no longer implement `Serializable`. Code that serializes Egeria beans with Java serialization must move to JSON.
* The GitHub Actions and the platform's base image are now pinned by hash, following the OpenSSF Scorecard recommendations.
@@ -201,12 +229,19 @@ Much of the work in this release has gone into testing. Seventeen functional ve
Product families catalogued by an earlier release need Jacquard to rebuild them so that they can be subscribed to as one product. Subscription options now name the `provision-subscription` request type.
+??? warning "API changes to the OMAG Server Platform"
+ When an annotation is returned as an OpenMetadataRootElement, the survey report(s) it is associated with are found in the attribute `fromSurveyReports` (a list) rather than `fromSurveyReport` (a single element).
+
??? warning "Other behaviour changes"
* The repository count operations now only count the instances a repository homes, or holds for a provenance other than the cohort - not reference copies - so counts may be lower than before.
* Naming the ends of a relationship in *findRelationshipsBetweenMetadataElements* without an *endMatchCriteria* now matches both ends, where previously the ends were ignored and every relationship of the type was returned. A relationship whose *effectiveToTime* is exactly the query time is no longer returned.
* `getEntityDetail` and `getRelationship` with an *asOfTime* no longer return an instance that had been deleted by that time.
* Instances loaded from an open metadata archive now record the archive that supplied them and can be maintained.
- * Existing survey annotations are not re-anchored to their survey report. They are removed only when the asset they describe is deleted.
+ * Survey annotations are anchored to the surveyed asset and removed when it is deleted - deleting a survey report no longer removes its annotations. Duplicate annotations left by earlier surveys are merged the next time the asset is surveyed.
+ * REST calls made by Egeria's clients now give up after 30 minutes without a response; previously a call to a server that never answered waited for ever. The limit is set by the *requestTimeoutSeconds* property of the client's connection, or the `egeria.rest.client.request.timeout.seconds` system property; 0 means no limit.
+ * A list inside *extendedProperties*, or any *map* property, is now returned as a JSON list rather than as an object with keys `"0"`, `"1"` and so on.
+ * Lists of engine actions leave out any engine action that the caller is not allowed to read in full. A search result that a user may not read because of its anchor's zones is now filtered out and logged as filtered, rather than as an unauthorized access attempt.
+ * Saving or deleting a client-side secret through a secrets store that cannot write secrets collections now fails with `OMAG-COMMON-400-034`.
* Repositories that loaded content packs from an earlier 6.x release, before the reload defect was fixed, should be rebuilt once so that the current content is loaded.
* Values corrupted by the PostgreSQL single-quote defect are not repaired.
* Dynamic type management is open to any authenticated user unless a [security connector](/features/metadata-security/overview) restricts it.
@@ -235,4 +270,6 @@ Much of the work in this release has gone into testing. Seventeen functional ve
* The link operations for multi-link relationships, such as the Asset Maker `DataSetContent` attach, now return a `GUIDResponse`. The detach operation that identifies the relationship by its ends now removes every matching relationship.
* The Connection Maker operations under `/assets/...` are deprecated in favour of `/elements/{elementGUID}/connections/{connectionGUID}/attach` and `/detach`.
* Many message identifiers have changed, for example `OMAG-SERVER-SECURITY-*` and `OMAG-PLATFORM-SECURITY-*` are now `OPEN-METADATA-SECURITY-*` and `OPEN-WATCHDOG-*` are now `OPEN-GOVERNANCE-ACTION-*`. 470 message definitions that nothing raised have been removed. Update any monitoring that matches on message identifiers.
- * Public classes and enum constants that were no longer used have been removed, including `RepositoryRelatedEntitiesIterator`, `RepositoryIteratorForEntities` and `OMRSErrorCode.NO_METADATA_HIGHWAY`.
+ * Public classes and enum constants that were no longer used have been removed, including `RepositoryRelatedEntitiesIterator`, `RepositoryIteratorForEntities` and `OMRSErrorCode.NO_METADATA_HIGHWAY`. The unused `validateEnterpriseTypeDefs` and `validateEnterpriseAttributeTypeDefs` methods are removed from `OMRSRepositoryValidator`.
+ * `GovernanceCompletionInterface` has a new method, `getApprovedEngineActions`, served by the new `.../governance-engines/{governanceEngineGUID}/approved-engine-actions` endpoint. Other implementations of the interface need to add it.
+ * `SecretsStoreConnector` has new `isSecretsCollectionUpdateSupported`, `saveSecretsCollection` and `deleteSecretsCollection` methods. Unless a connector overrides them, the last two report `OCF-CONNECTOR-400-012`.
diff --git a/site/snippets/release-notes/6-3.md b/site/snippets/release-notes/6-3.md
new file mode 100644
index 0000000000..d8a7154121
--- /dev/null
+++ b/site/snippets/release-notes/6-3.md
@@ -0,0 +1,13 @@
+
+
+
+## Release 6.3 (expected December 2026)
+
+_**These are DRAFT release notes. The notes will be updated until and when 6.3 is released**_
+
+
+### Details of this release
+
+
+
+
\ No newline at end of file