diff --git a/jans-scim/server/src/main/java/io/jans/scim/service/init/AppInitializer.java b/jans-scim/server/src/main/java/io/jans/scim/service/init/AppInitializer.java
index 07378b91251..fdc7f984bf6 100644
--- a/jans-scim/server/src/main/java/io/jans/scim/service/init/AppInitializer.java
+++ b/jans-scim/server/src/main/java/io/jans/scim/service/init/AppInitializer.java
@@ -85,7 +85,8 @@ public void applicationInitialized(@Observes @Initialized(ApplicationScoped.clas
configurationFactory.initTimer();
loggerService.initTimer();
//externalScimService.init();
- customScriptManager.initTimer(Arrays.asList(CustomScriptType.SCIM, CustomScriptType.PERSISTENCE_EXTENSION));
+ customScriptManager.initTimer(Arrays.asList(
+ CustomScriptType.SCIM, CustomScriptType.PERSISTENCE_EXTENSION, CustomScriptType.ID_GENERATOR));
logger.info("Initialized!");
}
diff --git a/jans-scim/service/pom.xml b/jans-scim/service/pom.xml
index 327a52fd7f5..6ce427a8b50 100644
--- a/jans-scim/service/pom.xml
+++ b/jans-scim/service/pom.xml
@@ -95,6 +95,10 @@
io.jans
jans-auth-client
+
+ io.jans
+ jans-auth-common
+
diff --git a/jans-scim/service/src/main/java/io/jans/scim/service/GroupService.java b/jans-scim/service/src/main/java/io/jans/scim/service/GroupService.java
index 41bea54fc1a..2c531780888 100644
--- a/jans-scim/service/src/main/java/io/jans/scim/service/GroupService.java
+++ b/jans-scim/service/src/main/java/io/jans/scim/service/GroupService.java
@@ -6,16 +6,8 @@
package io.jans.scim.service;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-
-import org.slf4j.Logger;
-
+import io.jans.as.common.service.common.ExternalIdGeneratorService;
+import io.jans.as.model.common.IdType;
import io.jans.orm.PersistenceEntryManager;
import io.jans.orm.exception.EntryPersistenceException;
import io.jans.orm.exception.operation.DuplicateEntryException;
@@ -29,6 +21,15 @@
import io.jans.util.ArrayHelper;
import io.jans.util.StringHelper;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.slf4j.Logger;
+
/**
* Provides operations with groups
*
@@ -51,6 +52,9 @@ public class GroupService implements Serializable {
@Inject
private PersonService personService;
+ @Inject
+ private ExternalIdGeneratorService idGeneratorService;
+
public void addGroup(GluuGroup group) throws Exception {
GluuGroup displayNameGroup = new GluuGroup();
displayNameGroup.setDisplayName(group.getDisplayName());
@@ -179,7 +183,19 @@ public GluuGroupVisibility[] getVisibilityTypes() {
* @return New inum for group
*/
private String generateInumForNewGroupImpl() throws Exception {
- return UUID.randomUUID().toString();
+
+ String id = null;
+ if (idGeneratorService.isEnabled()) {
+ id = idGeneratorService.executeExternalGenerateIdMethod(
+ //Use the first enabled script only
+ idGeneratorService.getCustomScriptConfigurations().stream().findFirst().orElse(null)
+ , "" //appId
+ , IdType.GROUP.getType() //idType
+ , "" //idPrefix
+ );
+ }
+ return id == null ? UUID.randomUUID().toString() : id;
+
}
public GluuGroup getGroupByDn(String Dn) {
diff --git a/jans-scim/service/src/main/java/io/jans/scim/service/PersonService.java b/jans-scim/service/src/main/java/io/jans/scim/service/PersonService.java
index 0dce179d130..593f2685306 100644
--- a/jans-scim/service/src/main/java/io/jans/scim/service/PersonService.java
+++ b/jans-scim/service/src/main/java/io/jans/scim/service/PersonService.java
@@ -6,19 +6,8 @@
package io.jans.scim.service;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.time.Instant;
-import java.util.UUID;
-
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-
+import io.jans.as.common.service.common.ExternalIdGeneratorService;
+import io.jans.as.model.common.IdType;
import io.jans.model.GluuAttribute;
import io.jans.orm.PersistenceEntryManager;
import io.jans.orm.exception.operation.DuplicateEntryException;
@@ -27,16 +16,28 @@
import io.jans.orm.model.base.SimpleBranch;
import io.jans.orm.model.base.SimpleUser;
import io.jans.orm.search.filter.Filter;
-import io.jans.util.ArrayHelper;
-import io.jans.util.OxConstants;
-import io.jans.util.StringHelper;
-import org.slf4j.Logger;
-
import io.jans.scim.exception.DuplicateEmailException;
import io.jans.scim.model.GluuCustomAttribute;
import io.jans.scim.model.GluuCustomPerson;
import io.jans.scim.model.User;
import io.jans.scim.util.OxTrustConstants;
+import io.jans.util.ArrayHelper;
+import io.jans.util.OxConstants;
+import io.jans.util.StringHelper;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.time.Instant;
+import java.util.UUID;
+
+import org.slf4j.Logger;
/**
* Provides operations with persons
@@ -60,6 +61,9 @@ public class PersonService implements Serializable {
@Inject
private OrganizationService organizationService;
+ @Inject
+ private ExternalIdGeneratorService idGeneratorService;
+
private List mandatoryAttributes;
public void addCustomObjectClass(GluuCustomPerson person) {
@@ -274,7 +278,19 @@ public String generateInumForNewPerson() {
* @throws Exception
*/
private String generateInumForNewPersonImpl() {
- return UUID.randomUUID().toString();
+
+ String id = null;
+ if (idGeneratorService.isEnabled()) {
+ id = idGeneratorService.executeExternalGenerateIdMethod(
+ //Use the first enabled script only
+ idGeneratorService.getCustomScriptConfigurations().stream().findFirst().orElse(null)
+ , "" //appId
+ , IdType.PEOPLE.getType() //idType
+ , "" //idPrefix
+ );
+ }
+ return id == null ? UUID.randomUUID().toString() : id;
+
}
public String getDnForPerson(String inum) {