diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java
index 9d2892b7d2c17d1c4268505a68433a1f2fa829f2..333b7886cf90dcfda6fb73f501c5c2c427bfe168 100644
--- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java
+++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java
@@ -116,7 +116,12 @@ public class WorkService {
 
         var workEntity = workMapper.toEntity(workMapper.toWorkView(view));
         workEntity.setTags(tags);
-        workEntity.setGrid(IdentifierGenerator.generateGlobalReleaseIdentifier());
+
+        if (view.getGrid() != null) {
+            workEntity.setGrid(view.getGrid());
+        } else {
+            workEntity.setGrid(IdentifierGenerator.generateGlobalReleaseIdentifier());
+        }
 
         return workEntity;
     }
diff --git a/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java b/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java
index e68527f2c35bea2f71c73ae4614d76467ea6ab4c..088e5b77e9ada3d5baba31a727ee9e3a8bdeee92 100644
--- a/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java
+++ b/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java
@@ -43,7 +43,6 @@ public abstract class WorkMapper extends BaseMapper<Work, WorkView, UUID> {
     @Mapping(target = "ipfsMeta", ignore = true)
     @Mapping(target = "status", ignore = true)
     @Mapping(target = "filename", ignore = true)
-    @Mapping(target = "grid", ignore = true)
     @Mapping(target = "tags", ignore = true)
     public abstract WorkView toWorkView(WorkCreateView workCreateView);
 
diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java
index baa0a0e4b6d13305da3e33fb2fb022a009f4af5b..e5de8651136ab27a32a2d138266539fa1dc65b02 100644
--- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java
+++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java
@@ -51,6 +51,7 @@ public class Work extends Identifiable<UUID> {
             inverseJoinColumns = @JoinColumn(name = "tag_id"))
     private List<Tag> tags = new ArrayList<>();
 
+    @Column(length = 2)
     private String language;
 
     private ZonedDateTime creationDate;
diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java
index c5ec09c4722e3a917113cd40f9197fcebf49e830..832da5f4be53b784f308eb63df10ab75d2d3849a 100644
--- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java
+++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java
@@ -20,6 +20,7 @@ public class PublicWorkView {
     ZonedDateTime registrationDate;
     String publisher;
     String identifier;
+    String language;
     PublicContributorView creator;
     LicenseView license;
     String grid;
diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java
index 62ca2b865db6ef0c80798b1e8c0b618cd278a628..ca5bb6fc016a137761f6ef9b8e2c67e5a390c274 100644
--- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java
+++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java
@@ -6,6 +6,7 @@ import eu.fairkom.faircommons.common.models.WorkVisibility;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 import jakarta.validation.constraints.Size;
 import lombok.Builder;
 import lombok.Value;
@@ -22,7 +23,7 @@ public class WorkCreateView {
     @Size(max = 100) @NotBlank String title; //immutable
     @Size(max = 2000) @NotBlank String description; //immutable
     List<String> tags;
-    @Size(max = 255) String language;
+    @Size(max = 2) String language;
     ZonedDateTime creationDate;
     @Size(max = 36) @NotBlank String registrar; //immutable, keycloakUserId
     @Valid ContributorView creator;
@@ -34,4 +35,6 @@ public class WorkCreateView {
     @Builder.Default
     List<StorageOption> storageOptions = List.of(StorageOption.FAIRREGISTER_FILE_SYSTEM);
     @Valid LicenseView license;
+    @Pattern(regexp = "RC-(01|FAREG)-(LIZ\\d{10}|\\d{10})-([A-Z]|\\d)(?=$)")
+    String grid;
 }