This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 5b077053d3d4288fbfb38c5f888702c5529beeec
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Apr 17 08:36:27 2026 +0200

    Adding neo4j experimental option to the docs
---
 .../src/test/resources/domains/TwoSecurity.json    |  4 --
 .../src/test/resources/domains/TwoSecurity.json    |  4 --
 pom.xml                                            |  1 +
 .../asciidoc/getting-started/introduction.adoc     |  2 +-
 .../getting-started/systemRequirements.adoc        |  5 ++
 .../reference-guide/architecture/core.adoc         |  4 +-
 .../asciidoc/reference-guide/concepts/reports.adoc |  2 +-
 .../asciidoc/reference-guide/concepts/tasks.adoc   |  8 +--
 .../reference-guide/concepts/typemanagement.adoc   |  2 +-
 .../configuration/configuration.adoc               |  2 +-
 .../configuration/configurationparameters.adoc     |  2 +-
 .../reference-guide/configuration/deployment.adoc  |  8 +--
 .../configuration/domainsmanagement.adoc           |  3 +-
 .../configuration/{dbms.adoc => storage.adoc}      | 64 +++++++++++++++++++++-
 .../asciidoc/reference-guide/howto/upgrade.adoc    |  2 +-
 15 files changed, 86 insertions(+), 27 deletions(-)

diff --git a/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json 
b/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json
deleted file mode 100644
index 53e0269b71..0000000000
--- a/core/persistence-jpa/src/test/resources/domains/TwoSecurity.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "password": "2AA60A8FF7FCD473D321E0146AFD9E26DF395147",
-  "cipherAlgorithm": "SHA"
-}
diff --git a/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json 
b/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json
deleted file mode 100644
index 53e0269b71..0000000000
--- a/core/persistence-neo4j/src/test/resources/domains/TwoSecurity.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "password": "2AA60A8FF7FCD473D321E0146AFD9E26DF395147",
-  "cipherAlgorithm": "SHA"
-}
diff --git a/pom.xml b/pom.xml
index ce95b8e1b4..3799546d5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2315,6 +2315,7 @@ under the License.
                 <mysql>${docker.mysql.version}</mysql>
                 <mariadb>${docker.mariadb.version}</mariadb>
                 <oracle>${docker.oracle.version}</oracle>
+                <neo4j>${docker.neo4j.version}</neo4j>
                 <postgresqlJDBC>${jdbc.postgresql.version}</postgresqlJDBC>
                 <mysqlJDBC>${jdbc.mysql.version}</mysqlJDBC>
                 <mariadbJDBC>${jdbc.mariadb.version}</mariadbJDBC>
diff --git a/src/main/asciidoc/getting-started/introduction.adoc 
b/src/main/asciidoc/getting-started/introduction.adoc
index 8244169696..5e11e15f6c 100644
--- a/src/main/asciidoc/getting-started/introduction.adoc
+++ b/src/main/asciidoc/getting-started/introduction.adoc
@@ -146,7 +146,7 @@ http://www.bpmn.org/[BPMN 2.0^] implementations - or define 
new, custom ones.
  * *_Persistence_* manages all data (users, groups, attributes, resources, 
...) at a high level 
 using a standard https://jakarta.ee/specifications/persistence/3.2/[Jakarta 
Persistence 3.2] approach. The data is persisted to an underlying 
 database, referred to as *_Internal Storage_*. Consistency is ensured via the 
comprehensive
-https://docs.spring.io/spring-framework/reference/6.2/data-access/transaction.html[transaction
 management^] 
+https://docs.spring.io/spring-framework/reference/7.0/data-access/transaction.html[transaction
 management^] 
 provided by the Spring Framework. +
 Globally, this offers the ability to easily scale up to a million entities and 
at the same time allows great portability with no code 
 changes: PostgreSQL, MySQL, MariaDB and Oracle are fully supported deployment 
options.
diff --git a/src/main/asciidoc/getting-started/systemRequirements.adoc 
b/src/main/asciidoc/getting-started/systemRequirements.adoc
index fe64fcac67..53c75ecfca 100644
--- a/src/main/asciidoc/getting-started/systemRequirements.adoc
+++ b/src/main/asciidoc/getting-started/systemRequirements.adoc
@@ -48,3 +48,8 @@ Apache Syncope {docVersion} is verified with the recent 
versions of the followin
  . https://mariadb.org/[MariaDB^] (>= {mariadb}, JDBC driver >= {mariadbJDBC})
  . https://www.mysql.com/[MySQL^] (>= {mysql}, JDBC driver >= {mysqlJDBC})
  . https://www.oracle.com/database/index.html[Oracle Database^] (>= {oracle}, 
JDBC driver >= ojdbc11 {oracleJDBC})
+
+[WARNING]
+Persistence support for https://neo4j.com/product/neo4j-graph-database/[Neo4j 
Graph Database^] (>= {neo4j}) is also
+available. +
+While completely functional, the code is not considered stable for production 
environments.
diff --git a/src/main/asciidoc/reference-guide/architecture/core.adoc 
b/src/main/asciidoc/reference-guide/architecture/core.adoc
index dbe085499c..8d04ac598f 100644
--- a/src/main/asciidoc/reference-guide/architecture/core.adoc
+++ b/src/main/asciidoc/reference-guide/architecture/core.adoc
@@ -85,12 +85,12 @@ using a standard 
https://jakarta.ee/specifications/persistence/3.2/[Jakarta Pers
 https://hibernate.org/orm/[Hibernate ORM^].
 The data is persisted into an underlying database, referred to as *_Internal 
Storage_*. Consistency is ensured via the
 comprehensive
-https://docs.spring.io/spring-framework/reference/6.2/data-access/transaction.html[transaction
 management^] 
+https://docs.spring.io/spring-framework/reference/7.0/data-access/transaction.html[transaction
 management^] 
 provided by the Spring Framework.
 
 Globally, this offers the ability to easily scale up to a million entities and 
at the same time allows great portability
 with no code changes: PostgreSQL, MySQL, MariaDB and Oracle are fully supported
-<<dbms,deployment options>>.
+<<internal-storage,deployment options>>.
 
 <<domains>> allow to manage data belonging to different 
https://en.wikipedia.org/wiki/Multitenancy[tenants^] into
 separate database instances.
diff --git a/src/main/asciidoc/reference-guide/concepts/reports.adoc 
b/src/main/asciidoc/reference-guide/concepts/reports.adoc
index 428933142b..7f8ca84359 100644
--- a/src/main/asciidoc/reference-guide/concepts/reports.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/reports.adoc
@@ -34,4 +34,4 @@ endif::[]
 providing the custom logic to extract information from Syncope and generate 
output according to the configured mime type
 * scheduling information:
 ** when to start
-** 
https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
+** 
https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
diff --git a/src/main/asciidoc/reference-guide/concepts/tasks.adoc 
b/src/main/asciidoc/reference-guide/concepts/tasks.adoc
index 5d265251f4..78b07d96a9 100644
--- a/src/main/asciidoc/reference-guide/concepts/tasks.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/tasks.adoc
@@ -101,7 +101,7 @@ When defining a pull task, the following information must 
be provided:
 * <<pull-templates,entity templates>>
 * scheduling information:
 ** when to start
-** 
https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
+** 
https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
 
 [NOTE]
 ====
@@ -189,7 +189,7 @@ When defining a push task, the following information must 
be provided:
 * optional <<pushactions,push action(s)>>
 * scheduling information:
 ** when to start
-** 
https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
+** 
https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
 
 [NOTE]
 ====
@@ -258,7 +258,7 @@ When defining a macro task, the following information must 
be provided:
 list, update or execute the given macro task
 * scheduling information:
 ** when to start
-** 
https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
+** 
https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
 
 ===== MacroActions
 
@@ -510,7 +510,7 @@ endif::[]
 providing the custom logic to execute
 * scheduling information:
 ** when to start
-** 
https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
+** 
https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron
 expression^]
 
 [TIP]
 ====
diff --git a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc 
b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc
index 426e571092..4b86130953 100644
--- a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc
@@ -47,7 +47,7 @@ 
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/text/DateForma
 ** `Dropdown` - allows to specify an <<implementations,implementation>> which 
will dynamically return the value(s) that
 can be selected
 ** `Encrypted`
-*** secret key (stored or referenced as 
https://docs.spring.io/spring-framework/reference/6.2/core/beans/environment.html#beans-using-propertysource[Spring
 property^])
+*** secret key (stored or referenced as 
https://docs.spring.io/spring-framework/reference/7.0/core/beans/environment.html#beans-using-propertysource[Spring
 property^])
 *** cipher algorithm
 *** whether transparent encryption is to be enabled, e.g. attribute values are 
stored as encrypted but available as
 cleartext on-demand (requires AES ciphering)
diff --git a/src/main/asciidoc/reference-guide/configuration/configuration.adoc 
b/src/main/asciidoc/reference-guide/configuration/configuration.adoc
index 39352cce7f..cdeab1759d 100644
--- a/src/main/asciidoc/reference-guide/configuration/configuration.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/configuration.adoc
@@ -46,7 +46,7 @@ was generated, the configuration files will be first searched 
in
 
 include::deployment.adoc[]
 
-include::dbms.adoc[]
+include::storage.adoc[]
 
 include::highavailability.adoc[]
 
diff --git 
a/src/main/asciidoc/reference-guide/configuration/configurationparameters.adoc 
b/src/main/asciidoc/reference-guide/configuration/configurationparameters.adoc
index bfb339bdb2..b4f9d80046 100644
--- 
a/src/main/asciidoc/reference-guide/configuration/configurationparameters.adoc
+++ 
b/src/main/asciidoc/reference-guide/configuration/configurationparameters.adoc
@@ -38,7 +38,7 @@ behaviors at runtime, expecially with high-availability.
 * `jwt.lifetime.minutes` - validity of 
https://en.wikipedia.org/wiki/JSON_Web_Token[JSON Web Token^] values used for
 <<rest-authentication-and-authorization,authentication>> (in minutes);
 * `notificationjob.cronExpression` -
-https://docs.spring.io/spring-framework/reference/6.2/integration/scheduling.html#scheduling-cron-expression[cron^]
 expression describing how
+https://docs.spring.io/spring-framework/reference/7.0/integration/scheduling.html#scheduling-cron-expression[cron^]
 expression describing how
 frequently the pending <<tasks-notification,notification tasks>> are 
processed: empty means disabled;
 [NOTE]
 Restarting the deployment is required when changing value for this parameter.
diff --git a/src/main/asciidoc/reference-guide/configuration/deployment.adoc 
b/src/main/asciidoc/reference-guide/configuration/deployment.adoc
index c9d18ce736..a627f7ea79 100644
--- a/src/main/asciidoc/reference-guide/configuration/deployment.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/deployment.adoc
@@ -24,7 +24,7 @@ Jakarta EE containers.
 
 [WARNING]
 The only exception is <<secure-remote-access>> that, being based on Spring 
Cloud Gateway - which in turn is built on 
-https://docs.spring.io/spring-framework/reference/6.2/web-reactive.html[Spring 
WebFlux^] and
+https://docs.spring.io/spring-framework/reference/7.0/web-reactive.html[Spring 
WebFlux^] and
 https://projectreactor.io/docs[Project Reactor^], is only available as 
standalone application.
 
 [CAUTION]
@@ -58,7 +58,7 @@ 
https://docs.spring.io/spring-boot/4.0/reference/features/spring-application.htm
 
 .Run Core application as standalone under GNU / Linux
 ====
-Assuming that the JDBC driver JAR file for the configured <<dbms>> is 
available under `/opt/syncope/lib`,
+Assuming that the JDBC driver JAR file for the configured <<internal-storage>> 
is available under `/opt/syncope/lib`,
 the Core application can be built and run as follows:
 
 [source,bash]
@@ -93,8 +93,8 @@ settings.
 ****
 The <<persistence,internal storage>> is the central place where all data of a 
given <<Core>> deployment are located.
 
-After choosing the appropriate <<DBMS>>, it is of fundamental importance to 
provide an adequate configuration for the
-related database https://en.wikipedia.org/wiki/Connection_pool[connection 
pool^]. 
+After choosing the appropriate technology for <<internal-storage>>, it is of 
fundamental importance to provide an
+adequate configuration for the related database 
https://en.wikipedia.org/wiki/Connection_pool[connection pool^]. 
 
 The database connection pool can be:
 
diff --git 
a/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc 
b/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc
index 28363caf4a..2437504aa1 100644
--- a/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/domainsmanagement.adoc
@@ -18,10 +18,9 @@
 //
 === Domains Management
 
-Besides the pre-defined `Master` domain, other <<domains>> are bootstrapped 
during <<core>> startup from three files
+Besides the pre-defined `Master` domain, other <<domains>> are bootstrapped 
during <<core>> startup from two files
 in the <<properties-files-location,configuration directory>>; assuming that 
the domain name is `Two`, such files are:
 
-* `domains/TwoSecurity.json` - admin credentials;
 * `domains/TwoKeymasterConfParams.json` - for <<keymaster>> initialization;
 * `domains/TwoContent.xml` - for <<import,content>> initialization.
 
diff --git a/src/main/asciidoc/reference-guide/configuration/dbms.adoc 
b/src/main/asciidoc/reference-guide/configuration/storage.adoc
similarity index 79%
rename from src/main/asciidoc/reference-guide/configuration/dbms.adoc
rename to src/main/asciidoc/reference-guide/configuration/storage.adoc
index 123c87c0f4..67146c24ca 100644
--- a/src/main/asciidoc/reference-guide/configuration/dbms.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/storage.adoc
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-=== DBMS
+=== Internal Storage
 
 ==== PostgreSQL
 
@@ -163,3 +163,65 @@ for the Core application.
 [WARNING]
 This assumes that you have an Oracle instance running on localhost, listening 
on its default port 1521 with a database
 `syncope` under tablespace `SYNCOPE`, fully accessible by user `syncope` with 
password `syncope`.
+
+==== Neo4j
+
+[NOTE]
+Apache Syncope {docVersion} is verified with Neo4j Graph Database >= {neo4j}).
+
+[WARNING]
+While completely functional, the code is not considered stable for production 
environments.
+
+Replace
+
+[source,xml]
+....
+    <dependency>
+      <groupId>org.apache.syncope.core</groupId>
+      <artifactId>syncope-core-starter</artifactId>
+    </dependency>
+....
+
+with
+
+[source,xml]
+....
+    <dependency>
+      <groupId>org.apache.syncope.core</groupId>
+      <artifactId>syncope-core-starter</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.syncope.core</groupId>
+          <artifactId>syncope-core-persistence-jpa</artifactId>          
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.syncope.core</groupId>
+      <artifactId>syncope-core-persistence-neo4j</artifactId>
+      <version>${syncope.version}</version>
+    </dependency>
+....
+
+in `core/pom.xml`.
+
+Create
+
+[source]
+....
+persistence.domain[0].key=Master
+persistence.domain[0].uri=bolt://localhost:7687/
+persistence.domain[0].username=neo4j
+persistence.domain[0].password=null
+persistence.domain[0].maxConnectionPoolSize=100
+....
+
+as `core/src/main/resources/core-neo4j.properties`.
+
+Do not forget to include `neo4j` as 
+https://docs.spring.io/spring-boot/3.5/reference/features/profiles.html#features.profiles.adding-active-profiles[Spring
 Boot profile^]
+for the Core application.
+
+[WARNING]
+This assumes that you have a Neo4j instance running on localhost, listening on 
its default port 7687,
+fully accessible by user `neo4j` with no password set.
diff --git a/src/main/asciidoc/reference-guide/howto/upgrade.adoc 
b/src/main/asciidoc/reference-guide/howto/upgrade.adoc
index d7c2b8e4c3..b5a380e1b5 100644
--- a/src/main/asciidoc/reference-guide/howto/upgrade.adoc
+++ b/src/main/asciidoc/reference-guide/howto/upgrade.adoc
@@ -31,7 +31,7 @@ Also, ensure to have a full backup of the existing database 
used as <<persistenc
 ==== Persistence Storage upgrade
 
 [CAUTION]
-Ensure to <<dbms,check the compatibility>> of the existing DBMS and upgrade, 
if needed.
+Ensure to <<internal-storage,check the compatibility>> of the existing DBMS 
and upgrade, if needed.
 
 Download 
https://syncope.apache.org/downloads[`syncope-core-persistence-jpa-upgrader-{docVersion}.jar`^]:
 this tool will generate the full set of SQL statements required to upgrade the 
internal storage to Syncope 4.1.

Reply via email to