Index: modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Constraints.java
===================================================================
--- modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Constraints.java	(revision 56414)
+++ modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Constraints.java	(revision 56415)
@@ -1,5 +1,6 @@
 package eu.dnetlib.data.bulktag;
 
+import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import eu.dnetlib.data.bulktag.selectioncriteria.VerbResolver;
 import org.apache.commons.logging.Log;
@@ -8,6 +9,8 @@
 
 import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Type;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -16,14 +19,69 @@
  */
 public class Constraints implements Serializable {
     private static final Log log = LogFactory.getLog(Constraints.class);
-    private ConstraintEncapsulator ce;
-    //private List<Constraint> ce;
+    //private ConstraintEncapsulator ce;
+    private List<Constraint> constraint;
 
 
     public Constraints() {
     }
+    public List<Constraint> getConstraint() {
+        return constraint;
+    }
 
-    public ConstraintEncapsulator getCe() {
+    public void setConstraint(List<Constraint> constraint) {
+        this.constraint = constraint;
+    }
+
+    public void setSc(String json){
+        Type collectionType = new TypeToken<Collection<Constraint>>(){}.getType();
+        constraint = new Gson().fromJson(json, collectionType);
+
+    }
+
+    void setSelection(VerbResolver resolver) {
+        for(Constraint st: constraint){
+
+            try {
+                st.setSelection(resolver);
+            } catch (NoSuchMethodException e) {
+                log.error(e.getMessage());
+            } catch (IllegalAccessException e) {
+                log.error(e.getMessage());
+            } catch (InvocationTargetException e) {
+                log.error(e.getMessage());
+            } catch (InstantiationException e) {
+                log.error(e.getMessage());
+            }
+        }
+
+    }
+
+//    //Constraint in and
+//    public boolean verifyCriteria(Map<String,String> param){
+//        for(Constraint constraint: constraint){
+//            if(!constraint.verifyCriteria(param.get(constraint.getField())))
+//                return false;
+//        }
+//        return true;
+//    }
+
+    //Constraint in and
+    public boolean verifyCriteria(Map<String,List<String>> param){
+
+        for(Constraint sc: constraint){
+            boolean verified = false;
+            for(String value : param.get(sc.getField())){
+                if (sc.verifyCriteria(value.trim())){
+                    verified = true;
+                }
+            }
+            if(!verified)
+                return verified;
+        }
+        return true;
+    }
+  /*  public ConstraintEncapsulator getCe() {
         return ce;
     }
 
@@ -31,7 +89,7 @@
         this.ce = ce;
     }
 
-    public void setSc(String json){
+    public void setConstraint(String json){
 
         ce = new Gson().fromJson(json, ConstraintEncapsulator.class);
 
@@ -66,11 +124,11 @@
 
     //Constraint in and
     public boolean verifyCriteria(Map<String,List<String>> param) throws NullPointerException {
-        for(Constraint sc: ce.getConstraint()){
+        for(Constraint constraint: ce.getConstraint()){
             boolean verified = false;
-            for(String value : param.get(sc.getField())){
+            for(String value : param.get(constraint.getField())){
                 try {
-                    if (sc.verifyCriteria(value.trim())) {
+                    if (constraint.verifyCriteria(value.trim())) {
                         verified = true;
                     }
                 }catch(NullPointerException npe){
@@ -83,5 +141,5 @@
                 return verified;
         }
         return true;
-    }
+    }*/
 }
\ No newline at end of file
Index: modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Datasource.java
===================================================================
--- modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Datasource.java	(revision 56414)
+++ modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/Datasource.java	(revision 56415)
@@ -1,16 +1,10 @@
 package eu.dnetlib.data.bulktag;
 
 
-import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import eu.dnetlib.data.bulktag.selectioncriteria.VerbResolver;
 import org.dom4j.Node;
 
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
 /**
  * Created by miriam on 01/08/2018.
  */
@@ -18,17 +12,23 @@
 
     private String openaireId;
 
-    private SelectionConstraints sc;
+    private SelectionConstraints selectionConstraints;
 
 
     public SelectionConstraints getSelCriteria() {
-        return sc;
+        return selectionConstraints;
     }
 
+    public SelectionConstraints getSelectionConstraints() {
+        return selectionConstraints;
+    }
 
+    public void setSelectionConstraints(SelectionConstraints selectionConstraints) {
+        this.selectionConstraints = selectionConstraints;
+    }
 
     public void setSelCriteria(SelectionConstraints selCriteria) {
-        this.sc = selCriteria;
+        this.selectionConstraints = selCriteria;
     }
 
     public String getOpenaireId() {
@@ -40,8 +40,8 @@
     }
 
     private void setSelCriteria(String json, VerbResolver resolver){
-        sc = new Gson().fromJson(json, SelectionConstraints.class);
-        sc.setSelection(resolver);
+        selectionConstraints = new Gson().fromJson(json, SelectionConstraints.class);
+        selectionConstraints.setSelection(resolver);
     }
 
     public void setSelCriteria(Node n, VerbResolver resolver){
@@ -48,7 +48,7 @@
         try{
             setSelCriteria(n.getText(),resolver);
         }catch(Exception e) {
-            sc=null;
+            selectionConstraints =null;
         }
 
     }
Index: modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/SelectionConstraints.java
===================================================================
--- modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/SelectionConstraints.java	(revision 56414)
+++ modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/bulktag/SelectionConstraints.java	(revision 56415)
@@ -1,37 +1,38 @@
 package eu.dnetlib.data.bulktag;
 
+import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import eu.dnetlib.data.bulktag.selectioncriteria.VerbResolver;
 
 import java.io.Serializable;
+import java.lang.reflect.Type;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 public class SelectionConstraints implements Serializable {
-    private ConstraintsList cl;
+    private List<Constraints> criteria;
 
-   // private List<Constraints>cl;
-
-
     public SelectionConstraints() {
     }
 
-    public ConstraintsList getCl() {
-        return cl;
+
+    public List<Constraints> getCriteria() {
+        return criteria;
     }
 
-    public void setCl(ConstraintsList cl) {
-        this.cl = cl;
+    public void setCriteria(List<Constraints> criteria) {
+        this.criteria = criteria;
     }
 
     public void setSc(String json){
-
-        cl = new Gson().fromJson(json, ConstraintsList.class);
+        Type collectionType = new TypeToken<Collection<Constraints>>(){}.getType();
+        criteria = new Gson().fromJson(json, collectionType);
     }
 
-
+    //Constraints in or
     public boolean verifyCriteria(Map<String,List<String>> param){
-        for(Constraints selc: cl.getCriteria()){
+        for(Constraints selc: criteria){
             if(selc.verifyCriteria(param)){
                 return true;
             }
@@ -40,7 +41,7 @@
     }
     public void setSelection(VerbResolver resolver) {
 
-        for(Constraints cs : cl.getCriteria()){
+        for(Constraints cs : criteria){
             cs.setSelection(resolver);
         }
     }
