Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityNotFoundException.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityNotFoundException.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityNotFoundException.java	(revision 51046)
@@ -8,8 +8,8 @@
 @ResponseStatus(value = HttpStatus.NOT_FOUND)
 public class CommunityNotFoundException extends Exception {
 
-	public CommunityNotFoundException() {
-
+	public CommunityNotFoundException(final String msg) {
+		super(msg);
 	}
 
 	public CommunityNotFoundException(final Exception e) {
Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityConstants.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityConstants.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityConstants.java	(revision 51046)
@@ -1,7 +1,13 @@
 package eu.dnetlib.openaire.exporter.community;
 
+import java.util.Set;
+
+import com.google.common.collect.Sets;
+
 public class CommunityConstants {
 
+	public final static Set<String> communityBlackList = Sets.newHashSet("fet-fp7", "fet-h2020");
+
 	// common
 	public final static String OPENAIRE_ID = "openaireid";
 	public final static String PIPE_SEPARATOR = "||";
Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityMappingUtils.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityMappingUtils.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityMappingUtils.java	(revision 51046)
@@ -107,6 +107,7 @@
 						"<concept claim='true' id='%s%s%s%s' label='%s'>\n",
 						escape(esc, contextId), PROJECTS_ID_SUFFIX, ID_SEPARATOR, escape(esc, project.getId()), escape(esc, project.getAcronym())));
 		sb.append(paramXML(CPROJECT_FULLNAME, project.getName()));
+		sb.append(paramXML(CPROJECT_ACRONYM, project.getAcronym()));
 		sb.append(paramXML(CPROJECT_NUMBER, project.getGrantId()));
 		sb.append(paramXML(CPROJECT_FUNDER, project.getFunder()));
 		sb.append(paramXML(OPENAIRE_ID, project.getOpenaireid()));
Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityException.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityException.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityException.java	(revision 51046)
@@ -10,6 +10,10 @@
 @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
 public class CommunityException extends Exception {
 
+	public CommunityException(final String message) {
+		super(message);
+	}
+
 	public CommunityException(final IOException e) {
 		super(e);
 	}
Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityApiCore.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityApiCore.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityApiCore.java	(revision 51046)
@@ -6,6 +6,7 @@
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import com.google.common.base.Functions;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
 import eu.dnetlib.openaire.exporter.datasource.clients.ISClient;
@@ -12,6 +13,7 @@
 import eu.dnetlib.openaire.exporter.funders.context.Category;
 import eu.dnetlib.openaire.exporter.funders.context.Concept;
 import eu.dnetlib.openaire.exporter.funders.context.Context;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -25,6 +27,7 @@
 
 	public List<CommunitySummary> listCommunities() throws CommunityException {
 		return getContextMap().values().stream()
+				.filter(context -> !communityBlackList.contains(context.getId()))
 				.map(CommunityMappingUtils::asCommunitySummary)
 				.collect(Collectors.toList());
 	}
@@ -31,8 +34,8 @@
 
 	public CommunityDetails getCommunity(final String id) throws CommunityException, CommunityNotFoundException {
 		final Context context = getContextMap().get(id);
-		if (context == null) {
-			throw new CommunityNotFoundException();
+		if (context == null || CommunityConstants.communityBlackList.contains(id)) {
+			throw new CommunityNotFoundException(String.format("community '%s' does not exist", id));
 		}
 		return CommunityMappingUtils.asCommunityProfile(context);
 	}
@@ -55,12 +58,28 @@
 	}
 
 	public void addCommunityProject(final String id, final CommunityProject project) throws CommunityException, CommunityNotFoundException {
-		getCommunity(id); // ensure the community exists.
+		if (!StringUtils.equalsIgnoreCase(id, project.getCommunityId())) {
+			throw new CommunityException("parameters 'id' and project.communityId must be coherent");
+		}
+
+		if (StringUtils.isBlank(project.getId())) {
+			throw new CommunityException("parameter 'id' must be non empty");
+		}
+
+		final Map<String, CommunityProject> projects = getCommunityProjectMap(id);
+
+		if (projects.containsKey(project.getId())) {
+			throw new CommunityException(String.format("project '%s' already defined in context '%s'", project.getId(), id));
+		}
+
 		isClient.addConcept(id, id + PROJECTS_ID_SUFFIX, CommunityMappingUtils.asProjectXML(id, project));
 	}
 
 	public void removeCommunityProject(final String id, final String projectId) throws CommunityException, CommunityNotFoundException {
-		getCommunity(id); // ensure the community exists.
+		final Map<String, CommunityProject> projects = getCommunityProjectMap(id);
+		if (!projects.containsKey(projectId)) {
+			throw new CommunityNotFoundException(String.format("project '%s' doesn't exist within context '%s'", projectId, id));
+		}
 		isClient.removeConcept(
 				id,
 				id + PROJECTS_ID_SUFFIX,
@@ -73,12 +92,27 @@
 	}
 
 	public void addCommunityContentprovider(final String id, final CommunityContentprovider cp) throws CommunityException, CommunityNotFoundException {
-		getCommunity(id); // ensure the community exists.
+		if (!StringUtils.equalsIgnoreCase(id, cp.getCommunityId())) {
+			throw new CommunityException("parameters 'id' and cp.communityId must be coherent");
+		}
+
+		if (StringUtils.isBlank(cp.getId())) {
+			throw new CommunityException("parameter 'id' must be non empty");
+		}
+
+		final Map<String, CommunityContentprovider> cps = getCommunityContentproviderMap(id);
+
+		if (cps.containsKey(cp.getId())) {
+			throw new CommunityException(String.format("content provider '%s' already defined in context '%s'", cp.getId(), id));
+		}
 		isClient.addConcept(id, id + CONTENTPROVIDERS_ID_SUFFIX, CommunityMappingUtils.asContentProviderXML(id, cp));
 	}
 
 	public void removeCommunityContentProvider(final String id, final String contentproviderId) throws CommunityException, CommunityNotFoundException {
-		getCommunity(id); // ensure the community exists.
+		final Map<String, CommunityContentprovider> providers = getCommunityContentproviderMap(id);
+		if (!providers.containsKey(contentproviderId)) {
+			throw new CommunityNotFoundException(String.format("content provider '%s' doesn't exist within context '%s'", contentproviderId, id));
+		}
 		isClient.removeConcept(
 				id,
 				id + CONTENTPROVIDERS_ID_SUFFIX,
@@ -87,6 +121,20 @@
 
 	// HELPERS
 
+	private Map<String, CommunityProject> getCommunityProjectMap(final String id) throws CommunityException, CommunityNotFoundException {
+		return getCommunityProjects(id).stream()
+				.collect(Collectors.toMap(
+						CommunityProject::getId,
+						Functions.identity()));
+	}
+
+	private Map<String, CommunityContentprovider> getCommunityContentproviderMap(final String id) throws CommunityException, CommunityNotFoundException {
+		return getCommunityContentproviders(id).stream()
+				.collect(Collectors.toMap(
+						CommunityContentprovider::getId,
+						Functions.identity()));
+	}
+
 	private Map<String, Context> getContextMap() throws CommunityException {
 		try {
 			return isClient.getCommunityContextMap();
Index: modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityContentprovider.java
===================================================================
--- modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityContentprovider.java	(revision 51045)
+++ modules/dnet-openaire-exporter/trunk/src/main/java/eu/dnetlib/openaire/exporter/community/CommunityContentprovider.java	(revision 51046)
@@ -1,5 +1,7 @@
 package eu.dnetlib.openaire.exporter.community;
 
+import javax.validation.constraints.NotNull;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -9,9 +11,11 @@
 	@ApiModelProperty(value = "OpenAIRE identifier for this content provider, if available", required = false)
 	private String openaireid;
 
+	@NotNull
 	@ApiModelProperty(value = "the community identifier this content provider belongs to", required = true)
 	private String communityId;
 
+	@NotNull
 	@ApiModelProperty(value = "identifies this content provider within the context it belongs to", required = true)
 	private String id;
 
@@ -18,6 +22,7 @@
 	@ApiModelProperty(value = "content provider name", required = false)
 	private String name;
 
+	@NotNull
 	@ApiModelProperty(value = "content provider official name", required = true)
 	private String officialname;
 
