diff --git a/apps/dnet-exporter-api/pom.xml b/apps/dnet-exporter-api/pom.xml
index 06fde34d..36a5e924 100644
--- a/apps/dnet-exporter-api/pom.xml
+++ b/apps/dnet-exporter-api/pom.xml
@@ -141,6 +141,12 @@
spring-web
5.3.8
+
+
+ com.vladmihalcea
+ hibernate-types-52
+
+
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityService.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityService.java
new file mode 100644
index 00000000..84a01a97
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityService.java
@@ -0,0 +1,25 @@
+package eu.dnetlib.openaire.community.db;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import eu.dnetlib.openaire.community.db.repository.CommunityDatasourceRepository;
+import eu.dnetlib.openaire.community.db.repository.CommunityOrgRepository;
+import eu.dnetlib.openaire.community.db.repository.CommunityProjectRepository;
+import eu.dnetlib.openaire.community.db.repository.CommunityRepository;
+import eu.dnetlib.openaire.community.db.repository.CommunitySupportOrgRepository;
+
+@Service
+public class CommunityService {
+
+ @Autowired
+ private CommunityRepository communityRepository;
+ @Autowired
+ private CommunityProjectRepository communityProjectRepository;
+ @Autowired
+ private CommunityDatasourceRepository communityDatasourceRepository;
+ @Autowired
+ private CommunityOrgRepository communityOrgRepository;
+ @Autowired
+ private CommunitySupportOrgRepository communitySupportOrgRepository;
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java
new file mode 100644
index 00000000..521da00e
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java
@@ -0,0 +1,7 @@
+package eu.dnetlib.openaire.community.db;
+
+public enum CommunityStatus {
+ all,
+ manager,
+ hidden
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityType.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityType.java
new file mode 100644
index 00000000..65f2b175
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityType.java
@@ -0,0 +1,6 @@
+package eu.dnetlib.openaire.community.db;
+
+public enum CommunityType {
+ community,
+ ri
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java
new file mode 100644
index 00000000..c107d608
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java
@@ -0,0 +1,201 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Type;
+import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.TypeDefs;
+
+import com.vladmihalcea.hibernate.type.array.StringArrayType;
+import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
+import com.vladmihalcea.hibernate.type.json.JsonStringType;
+
+import eu.dnetlib.openaire.community.db.CommunityStatus;
+import eu.dnetlib.openaire.community.db.CommunityType;
+
+@Entity
+@Table(name = "communities")
+@TypeDefs({
+ @TypeDef(name = "string-array", typeClass = StringArrayType.class),
+ @TypeDef(name = "json", typeClass = JsonStringType.class),
+ @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
+})
+public class Community implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "id")
+ private String id;
+
+ @Column(name = "label")
+ private String label;
+
+ @Column(name = "description")
+ private String description;
+
+ @Column(name = "status")
+ @Enumerated(EnumType.STRING)
+ private CommunityStatus status = CommunityStatus.hidden;
+
+ @Column(name = "type")
+ @Enumerated(EnumType.STRING)
+ private CommunityType type;
+
+ @Type(type = "string-array")
+ @Column(name = "subjects", columnDefinition = "text[]")
+ private String[] subjects;
+
+ @Type(type = "string-array")
+ @Column(name = "fos", columnDefinition = "text[]")
+ private String[] fos;
+
+ @Type(type = "string-array")
+ @Column(name = "sdg", columnDefinition = "text[]")
+ private String[] sdg;
+
+ @Type(type = "jsonb")
+ @Column(name = "adv_constraints")
+ private String advancedConstraints;
+
+ @Type(type = "jsonb")
+ @Column(name = "remove_constraints")
+ private String removeConstraints;
+
+ @Column(name = "main_zenodo_community")
+ private String mainZenodoCommunity;
+
+ @Type(type = "string-array")
+ @Column(name = "other_zenodo_communities", columnDefinition = "text[]")
+ private String[] otherZenodoCommunities;
+
+ @Column(name = "creation_date")
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private LocalDateTime creationDate;
+
+ @Column(name = "logo_url")
+ private String logoUrl;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(final String id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(final String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(final String description) {
+ this.description = description;
+ }
+
+ public CommunityStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(final CommunityStatus status) {
+ this.status = status;
+ }
+
+ public CommunityType getType() {
+ return type;
+ }
+
+ public void setType(final CommunityType type) {
+ this.type = type;
+ }
+
+ public String[] getSubjects() {
+ return subjects;
+ }
+
+ public void setSubjects(final String[] subjects) {
+ this.subjects = subjects;
+ }
+
+ public String[] getFos() {
+ return fos;
+ }
+
+ public void setFos(final String[] fos) {
+ this.fos = fos;
+ }
+
+ public String[] getSdg() {
+ return sdg;
+ }
+
+ public void setSdg(final String[] sdg) {
+ this.sdg = sdg;
+ }
+
+ public String getAdvancedConstraints() {
+ return advancedConstraints;
+ }
+
+ public void setAdvancedConstraints(final String advancedConstraints) {
+ this.advancedConstraints = advancedConstraints;
+ }
+
+ public String getRemoveConstraints() {
+ return removeConstraints;
+ }
+
+ public void setRemoveConstraints(final String removeConstraints) {
+ this.removeConstraints = removeConstraints;
+ }
+
+ public String getMainZenodoCommunity() {
+ return mainZenodoCommunity;
+ }
+
+ public void setMainZenodoCommunity(final String mainZenodoCommunity) {
+ this.mainZenodoCommunity = mainZenodoCommunity;
+ }
+
+ public String[] getOtherZenodoCommunities() {
+ return otherZenodoCommunities;
+ }
+
+ public void setOtherZenodoCommunities(final String[] otherZenodoCommunities) {
+ this.otherZenodoCommunities = otherZenodoCommunities;
+ }
+
+ public LocalDateTime getCreationDate() {
+ return creationDate;
+ }
+
+ public void setCreationDate(final LocalDateTime creationDate) {
+ this.creationDate = creationDate;
+ }
+
+ public String getLogoUrl() {
+ return logoUrl;
+ }
+
+ public void setLogoUrl(final String logoUrl) {
+ this.logoUrl = logoUrl;
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasource.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasource.java
new file mode 100644
index 00000000..8623cde8
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasource.java
@@ -0,0 +1,61 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "community_datasources")
+@IdClass(CommunityDatasourcePK.class)
+public class CommunityDatasource implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "community")
+ private String community;
+
+ @Id
+ @Column(name = "ds_id")
+ private String dsId;
+
+ @Column(name = "ds_name")
+ private String dsName;
+
+ public CommunityDatasource() {}
+
+ public CommunityDatasource(final String community, final String dsId, final String dsName) {
+ this.community = community;
+ this.dsId = dsId;
+ this.dsName = dsName;
+ }
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getDsId() {
+ return dsId;
+ }
+
+ public void setDsId(final String dsId) {
+ this.dsId = dsId;
+ }
+
+ public String getDsName() {
+ return dsName;
+ }
+
+ public void setDsName(final String dsName) {
+ this.dsName = dsName;
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasourcePK.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasourcePK.java
new file mode 100644
index 00000000..848017db
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityDatasourcePK.java
@@ -0,0 +1,48 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class CommunityDatasourcePK implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String community;
+
+ private String dsId;
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getDsId() {
+ return dsId;
+ }
+
+ public void setDsId(final String dsId) {
+ this.dsId = dsId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(community, dsId);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) { return true; }
+ if (!(obj instanceof CommunityDatasourcePK)) { return false; }
+ final CommunityDatasourcePK other = (CommunityDatasourcePK) obj;
+ return Objects.equals(community, other.community) && Objects.equals(dsId, other.dsId);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("CommunityDatasourcePK [community=%s, dsId=%s]", community, dsId);
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrg.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrg.java
new file mode 100644
index 00000000..43569acf
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrg.java
@@ -0,0 +1,49 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "community_orgs")
+@IdClass(CommunityOrgPK.class)
+public class CommunityOrg implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "community")
+ private String community;
+
+ @Id
+ @Column(name = "org_id")
+ private String orgId;
+
+ public CommunityOrg() {}
+
+ public CommunityOrg(final String community, final String orgId) {
+ this.community = community;
+ this.orgId = orgId;
+ }
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getOrgId() {
+ return orgId;
+ }
+
+ public void setOrgId(final String orgId) {
+ this.orgId = orgId;
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrgPK.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrgPK.java
new file mode 100644
index 00000000..aee8f753
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityOrgPK.java
@@ -0,0 +1,47 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class CommunityOrgPK implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String community;
+
+ private String orgId;
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getOrgId() {
+ return orgId;
+ }
+
+ public void setOrgId(final String orgId) {
+ this.orgId = orgId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(community, orgId);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) { return true; }
+ if (!(obj instanceof CommunityDatasourcePK)) { return false; }
+ final CommunityOrgPK other = (CommunityOrgPK) obj;
+ return Objects.equals(community, other.community) && Objects.equals(orgId, other.orgId);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("CommunityOrgPK [community=%s, orgId=%s]", community, orgId);
+ }
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProject.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProject.java
new file mode 100644
index 00000000..39322124
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProject.java
@@ -0,0 +1,97 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "community_projects")
+@IdClass(CommunityProjectPK.class)
+public class CommunityProject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "community")
+ private String community;
+
+ @Id
+ @Column(name = "project_id")
+ private String projectId;
+
+ @Column(name = "project_code")
+ private String projectCode;
+
+ @Column(name = "project_name")
+ private String projectName;
+
+ @Column(name = "project_acronym")
+ private String projectAcronym;
+
+ @Column(name = "project_funder")
+ private String projectFunder;
+
+ public CommunityProject() {}
+
+ public CommunityProject(final String community, final String projectId, final String projectCode, final String projectName, final String projectAcronym,
+ final String projectFunder) {
+ this.community = community;
+ this.projectId = projectId;
+ this.projectCode = projectCode;
+ this.projectName = projectName;
+ this.projectAcronym = projectAcronym;
+ this.projectFunder = projectFunder;
+ }
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(final String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectCode() {
+ return projectCode;
+ }
+
+ public void setProjectCode(final String projectCode) {
+ this.projectCode = projectCode;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(final String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getProjectAcronym() {
+ return projectAcronym;
+ }
+
+ public void setProjectAcronym(final String projectAcronym) {
+ this.projectAcronym = projectAcronym;
+ }
+
+ public String getProjectFunder() {
+ return projectFunder;
+ }
+
+ public void setProjectFunder(final String projectFunder) {
+ this.projectFunder = projectFunder;
+ }
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProjectPK.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProjectPK.java
new file mode 100644
index 00000000..d12bb489
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunityProjectPK.java
@@ -0,0 +1,47 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class CommunityProjectPK implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String community;
+
+ private String projectId;
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(final String projectId) {
+ this.projectId = projectId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(community, projectId);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) { return true; }
+ if (!(obj instanceof CommunityProjectPK)) { return false; }
+ final CommunityProjectPK other = (CommunityProjectPK) obj;
+ return Objects.equals(community, other.community) && Objects.equals(projectId, other.projectId);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("CommunityProjectPK [community=%s, projectId=%s]", community, projectId);
+ }
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrg.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrg.java
new file mode 100644
index 00000000..06d508e2
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrg.java
@@ -0,0 +1,64 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "community_support_orgs")
+@IdClass(CommunitySupportOrgPK.class)
+public class CommunitySupportOrg implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "community")
+ private String community;
+
+ @Id
+ @Column(name = "org_name")
+ private String orgName;
+
+ @Column(name = "org_url")
+ private String orgUrl;
+
+ @Column(name = "org_logourl")
+ private String orgLogoUrl;
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getOrgName() {
+ return orgName;
+ }
+
+ public void setOrgName(final String orgName) {
+ this.orgName = orgName;
+ }
+
+ public String getOrgUrl() {
+ return orgUrl;
+ }
+
+ public void setOrgUrl(final String orgUrl) {
+ this.orgUrl = orgUrl;
+ }
+
+ public String getOrgLogoUrl() {
+ return orgLogoUrl;
+ }
+
+ public void setOrgLogoUrl(final String orgLogoUrl) {
+ this.orgLogoUrl = orgLogoUrl;
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrgPK.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrgPK.java
new file mode 100644
index 00000000..78557fbf
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/CommunitySupportOrgPK.java
@@ -0,0 +1,48 @@
+package eu.dnetlib.openaire.community.db.model;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class CommunitySupportOrgPK implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String community;
+
+ private String orgName;
+
+ public String getCommunity() {
+ return community;
+ }
+
+ public void setCommunity(final String community) {
+ this.community = community;
+ }
+
+ public String getOrgName() {
+ return orgName;
+ }
+
+ public void setOrgName(final String orgName) {
+ this.orgName = orgName;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(community, orgName);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) { return true; }
+ if (!(obj instanceof CommunitySupportOrgPK)) { return false; }
+ final CommunitySupportOrgPK other = (CommunitySupportOrgPK) obj;
+ return Objects.equals(community, other.community) && Objects.equals(orgName, other.orgName);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("CommunitySupportOrgPK [community=%s, orgName=%s]", community, orgName);
+ }
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityDatasourceRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityDatasourceRepository.java
new file mode 100644
index 00000000..ef351a78
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityDatasourceRepository.java
@@ -0,0 +1,9 @@
+package eu.dnetlib.openaire.community.db.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import eu.dnetlib.openaire.community.db.model.Community;
+
+public interface CommunityDatasourceRepository extends JpaRepository {
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityOrgRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityOrgRepository.java
new file mode 100644
index 00000000..1a128c4e
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityOrgRepository.java
@@ -0,0 +1,10 @@
+package eu.dnetlib.openaire.community.db.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import eu.dnetlib.openaire.community.db.model.CommunityOrg;
+import eu.dnetlib.openaire.community.db.model.CommunityOrgPK;
+
+public interface CommunityOrgRepository extends JpaRepository {
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityProjectRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityProjectRepository.java
new file mode 100644
index 00000000..e911826f
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityProjectRepository.java
@@ -0,0 +1,10 @@
+package eu.dnetlib.openaire.community.db.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import eu.dnetlib.openaire.community.db.model.CommunityProject;
+import eu.dnetlib.openaire.community.db.model.CommunityProjectPK;
+
+public interface CommunityProjectRepository extends JpaRepository {
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityRepository.java
new file mode 100644
index 00000000..1e4d5aee
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunityRepository.java
@@ -0,0 +1,9 @@
+package eu.dnetlib.openaire.community.db.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import eu.dnetlib.openaire.community.db.model.Community;
+
+public interface CommunityRepository extends JpaRepository {
+
+}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunitySupportOrgRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunitySupportOrgRepository.java
new file mode 100644
index 00000000..e50b2c16
--- /dev/null
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/repository/CommunitySupportOrgRepository.java
@@ -0,0 +1,10 @@
+package eu.dnetlib.openaire.community.db.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import eu.dnetlib.openaire.community.db.model.CommunitySupportOrg;
+import eu.dnetlib.openaire.community.db.model.CommunitySupportOrgPK;
+
+public interface CommunitySupportOrgRepository extends JpaRepository {
+
+}
diff --git a/apps/dnet-exporter-api/src/main/resources/global.properties b/apps/dnet-exporter-api/src/main/resources/global.properties
index c92fca73..2a7ae380 100644
--- a/apps/dnet-exporter-api/src/main/resources/global.properties
+++ b/apps/dnet-exporter-api/src/main/resources/global.properties
@@ -15,8 +15,8 @@ openaire.exporter.cxfClientConnectTimeout = 60000
openaire.exporter.cxfClientReceiveTimeout = 120000
# JDBC
-#openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dnet_openaireplus
-openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dev_openaire_8280
+openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dnet_openaireplus
+#openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dev_openaire_8280
openaire.exporter.jdbc.user = dnetapi
openaire.exporter.jdbc.pwd = dnetPwd
openaire.exporter.jdbc.minIdle = 1
diff --git a/libs/dnet-exporter-model/src/main/resources/sql/community-schema.sql b/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql
similarity index 96%
rename from libs/dnet-exporter-model/src/main/resources/sql/community-schema.sql
rename to apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql
index 0dac52bb..fbcff1a6 100644
--- a/libs/dnet-exporter-model/src/main/resources/sql/community-schema.sql
+++ b/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql
@@ -14,8 +14,8 @@ CREATE TABLE communities (
subjects text[],
fos text[],
sdg text[],
- adv_constraints json,
- remove_constraints json,
+ adv_constraints jsonb,
+ remove_constraints jsonb,
main_zenodo_community text,
other_zenodo_communities text[],
creation_date timestamp NOT NULL DEFAULT now(),