diff --git a/CHANGELOG.md b/CHANGELOG.md
index f21dfc1..2369834 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,10 @@
# Changelog for "keycloak-extension-spi"
+## [v0.1.0-SNAPSHOT]
+- First release as Maven multi-module project and support for avatar (#19726)
+
## [v0.0.1-SNAPSHOT]
-- First release (#19657)
+- First release (#19657, #19684)
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
\ No newline at end of file
diff --git a/avatar-realm-resource/pom.xml b/avatar-realm-resource/pom.xml
new file mode 100644
index 0000000..8afdb58
--- /dev/null
+++ b/avatar-realm-resource/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+
+ org.gcube
+ keycloak-d4science-spi
+ 0.1.0-SNAPSHOT
+
+
+ avatar-realm-resource
+ jar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/event-listener-provider/pom.xml b/event-listener-provider/pom.xml
new file mode 100644
index 0000000..070cec3
--- /dev/null
+++ b/event-listener-provider/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+
+ org.gcube
+ keycloak-d4science-spi
+ 0.1.0-SNAPSHOT
+
+
+ event-listener-provider
+ jar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/keycloak/event/KeycloakEvent.java b/event-listener-provider/src/main/java/org/gcube/keycloak/event/KeycloakEvent.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/event/KeycloakEvent.java
rename to event-listener-provider/src/main/java/org/gcube/keycloak/event/KeycloakEvent.java
diff --git a/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProvider.java b/event-listener-provider/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProvider.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProvider.java
rename to event-listener-provider/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProvider.java
diff --git a/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProviderFactory.java b/event-listener-provider/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProviderFactory.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProviderFactory.java
rename to event-listener-provider/src/main/java/org/gcube/keycloak/event/OrchestratorEventPublisherProviderFactory.java
diff --git a/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory b/event-listener-provider/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
similarity index 100%
rename from src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
rename to event-listener-provider/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
diff --git a/identity-provider-mapper/pom.xml b/identity-provider-mapper/pom.xml
new file mode 100644
index 0000000..8981bf9
--- /dev/null
+++ b/identity-provider-mapper/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+
+ org.gcube
+ keycloak-d4science-spi
+ 0.1.0-SNAPSHOT
+
+
+ identity-provider-mapper
+ jar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/keycloak/broker/oidc/mappers/UsernameFromMailMapper.java b/identity-provider-mapper/src/main/java/org/gcube/keycloak/broker/oidc/mappers/UsernameFromMailMapper.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/broker/oidc/mappers/UsernameFromMailMapper.java
rename to identity-provider-mapper/src/main/java/org/gcube/keycloak/broker/oidc/mappers/UsernameFromMailMapper.java
diff --git a/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper b/identity-provider-mapper/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper
similarity index 100%
rename from src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper
rename to identity-provider-mapper/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper
diff --git a/keycloak-d4science-spi-ear/pom.xml b/keycloak-d4science-spi-ear/pom.xml
new file mode 100644
index 0000000..5fe6f6f
--- /dev/null
+++ b/keycloak-d4science-spi-ear/pom.xml
@@ -0,0 +1,60 @@
+
+
+ 4.0.0
+
+
+ org.gcube
+ keycloak-d4science-spi
+ 0.1.0-SNAPSHOT
+
+
+ keycloak-d4science-spi-ear
+ ear
+
+
+
+
+ org.gcube.distribution
+ maven-portal-bom
+ 3.6.0
+ pom
+ import
+
+
+
+
+
+
+ org.gcube
+ event-listener-provider
+ ${project.version}
+
+
+ org.gcube
+ identity-provider-mapper
+ ${project.version}
+
+
+ org.gcube
+ ldap-storage-mapper
+ ${project.version}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-ear-plugin
+ 3.0.1
+
+ src/main/resources
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/META-INF/jboss-deployment-structure.xml b/keycloak-d4science-spi-ear/src/main/resources/META-INF/jboss-deployment-structure.xml
similarity index 100%
rename from src/main/resources/META-INF/jboss-deployment-structure.xml
rename to keycloak-d4science-spi-ear/src/main/resources/META-INF/jboss-deployment-structure.xml
diff --git a/ldap-storage-mapper/pom.xml b/ldap-storage-mapper/pom.xml
new file mode 100644
index 0000000..eea70c1
--- /dev/null
+++ b/ldap-storage-mapper/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+
+ org.gcube
+ keycloak-d4science-spi
+ 0.1.0-SNAPSHOT
+
+
+ ldap-storage-mapper
+ jar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapper.java b/ldap-storage-mapper/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapper.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapper.java
rename to ldap-storage-mapper/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapper.java
diff --git a/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapperFactory.java b/ldap-storage-mapper/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapperFactory.java
similarity index 100%
rename from src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapperFactory.java
rename to ldap-storage-mapper/src/main/java/org/gcube/keycloak/storage/ldap/mappers/UserAttributeTemplatedLDAPStorageMapperFactory.java
diff --git a/src/main/resources/META-INF/services/org.keycloak.storage.ldap.mappers.LDAPStorageMapperFactory b/ldap-storage-mapper/src/main/resources/META-INF/services/org.keycloak.storage.ldap.mappers.LDAPStorageMapperFactory
similarity index 100%
rename from src/main/resources/META-INF/services/org.keycloak.storage.ldap.mappers.LDAPStorageMapperFactory
rename to ldap-storage-mapper/src/main/resources/META-INF/services/org.keycloak.storage.ldap.mappers.LDAPStorageMapperFactory
diff --git a/pom.xml b/pom.xml
index 80e583f..87aa106 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,21 +8,30 @@
maven-parent
org.gcube.tools
1.1.0
-
org.gcube
keycloak-d4science-spi
- 0.0.1-SNAPSHOT
- jar
+ 0.1.0-SNAPSHOT
+ pom
-
- 10.0.2
- 3.4.1.Final
-
+
+ avatar-realm-resource
+ event-listener-provider
+ identity-provider-mapper
+ keycloak-d4science-spi-ear
+ ldap-storage-mapper
+
+
+ org.keycloak
+ keycloak-parent
+ 10.0.2
+ pom
+ import
+
org.gcube.distribution
maven-portal-bom
@@ -38,15 +47,12 @@
org.gcube.common
event-publisher-library
[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
-
-
- org.gcube.common
- oidc-library
- [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+ compile
com.googlecode.json-simple
json-simple
+ compile
org.slf4j
@@ -56,37 +62,31 @@
org.keycloak
keycloak-core
- ${keycloak-version}
provided
org.keycloak
keycloak-server-spi
- ${keycloak-version}
provided
org.keycloak
keycloak-server-spi-private
- ${keycloak-version}
provided
org.keycloak
keycloak-services
- ${keycloak-version}
provided
org.keycloak
keycloak-ldap-federation
- ${keycloak-version}
provided
org.jboss.logging
jboss-logging
- ${jboss.logging.version}
provided
@@ -103,31 +103,12 @@
org.wildfly.plugins
wildfly-maven-plugin
+
+ 2.0.0.Final
- false
+ true
-
- org.apache.maven.plugins
- maven-assembly-plugin
-
-
-
- jar-with-dependencies
-
-
-
-
-
- make-assembly
- package
-
- single
-
-
-
-
-
\ No newline at end of file