http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
index 582cd18..c9ef66a 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
@@ -33,7 +33,7 @@ import 
org.apache.syncope.core.persistence.jpa.entity.task.JPANotificationTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPropagationTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPASchedTask;
-import org.apache.syncope.core.persistence.jpa.entity.task.JPASyncTask;
+import org.apache.syncope.core.persistence.jpa.entity.task.JPAPullTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
@@ -63,8 +63,8 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> 
implements TaskDAO {
                 result = JPASchedTask.class;
                 break;
 
-            case SYNCHRONIZATION:
-                result = JPASyncTask.class;
+            case PULL:
+                result = JPAPullTask.class;
                 break;
 
             default:
@@ -116,7 +116,7 @@ public class JPATaskDAO extends AbstractDAO<Task, Long> 
implements TaskDAO {
             final Long anyTypeKey) {
 
         if (resource != null
-                && type != TaskType.PROPAGATION && type != TaskType.PUSH && 
type != TaskType.SYNCHRONIZATION) {
+                && type != TaskType.PROPAGATION && type != TaskType.PUSH && 
type != TaskType.PULL) {
 
             throw new IllegalArgumentException(type + " is not related to " + 
ExternalResource.class.getSimpleName());
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
index 5c8cc59..881f509 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
@@ -19,7 +19,7 @@
 package org.apache.syncope.core.persistence.jpa.entity;
 
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPASyncPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPushPolicy;
 import 
org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership;
@@ -49,7 +49,6 @@ import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.ReportExec;
 import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
 import org.apache.syncope.core.persistence.api.entity.Role;
-import org.apache.syncope.core.persistence.api.entity.policy.SyncPolicy;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import 
org.apache.syncope.core.persistence.api.entity.anyobject.ADynGroupMembership;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
@@ -70,13 +69,11 @@ import 
org.apache.syncope.core.persistence.api.entity.group.TypeExtension;
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.persistence.api.entity.task.AnyTemplateSyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTaskAnyFilter;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UDynGroupMembership;
@@ -106,12 +103,12 @@ import 
org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision;
 import 
org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTaskAnyFilter;
-import 
org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask;
+import 
org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplatePullTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPANotificationTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPropagationTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPASchedTask;
-import org.apache.syncope.core.persistence.jpa.entity.task.JPASyncTask;
+import org.apache.syncope.core.persistence.jpa.entity.task.JPAPullTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec;
 import 
org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership;
@@ -121,6 +118,9 @@ import 
org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
 import org.springframework.stereotype.Component;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 
 @Component
 public class JPAEntityFactory implements EntityFactory {
@@ -142,8 +142,8 @@ public class JPAEntityFactory implements EntityFactory {
             result = (T) new JPAPasswordPolicy();
         } else if (reference.equals(PushPolicy.class)) {
             result = (T) new JPAPushPolicy();
-        } else if (reference.equals(SyncPolicy.class)) {
-            result = (T) new JPASyncPolicy();
+        } else if (reference.equals(PullPolicy.class)) {
+            result = (T) new JPAPullPolicy();
         } else if (reference.equals(AnyTypeClass.class)) {
             result = (T) new JPAAnyTypeClass();
         } else if (reference.equals(AnyType.class)) {
@@ -228,16 +228,16 @@ public class JPAEntityFactory implements EntityFactory {
             result = (T) new JPAPropagationTask();
         } else if (reference.equals(PushTask.class)) {
             result = (T) new JPAPushTask();
-        } else if (reference.equals(SyncTask.class)) {
-            result = (T) new JPASyncTask();
+        } else if (reference.equals(PullTask.class)) {
+            result = (T) new JPAPullTask();
         } else if (reference.equals(SchedTask.class)) {
             result = (T) new JPASchedTask();
         } else if (reference.equals(TaskExec.class)) {
             result = (T) new JPATaskExec();
         } else if (reference.equals(PushTaskAnyFilter.class)) {
             result = (T) new JPAPushTaskAnyFilter();
-        } else if (reference.equals(AnyTemplateSyncTask.class)) {
-            result = (T) new JPAAnyTemplateSyncTask();
+        } else if (reference.equals(AnyTemplatePullTask.class)) {
+            result = (T) new JPAAnyTemplatePullTask();
         } else if (reference.equals(SecurityQuestion.class)) {
             result = (T) new JPASecurityQuestion();
         } else if (reference.equals(Logger.class)) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
new file mode 100644
index 0000000..c408b43
--- /dev/null
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity.policy;
+
+import javax.persistence.Entity;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import org.apache.syncope.common.lib.policy.PullPolicySpec;
+import org.apache.syncope.common.lib.types.PolicyType;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
+
+@Entity
+@Table(name = JPAPullPolicy.TABLE)
+public class JPAPullPolicy extends AbstractPolicy implements PullPolicy {
+
+    private static final long serialVersionUID = -6090413855809521279L;
+
+    public static final String TABLE = "PullPolicy";
+
+    @Lob
+    private String specification;
+
+    public JPAPullPolicy() {
+        super();
+        this.type = PolicyType.PULL;
+    }
+
+    @Override
+    public PullPolicySpec getSpecification() {
+        return POJOHelper.deserialize(specification, PullPolicySpec.class);
+    }
+
+    @Override
+    public void setSpecification(final PullPolicySpec policy) {
+        this.specification = POJOHelper.serialize(policy);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPASyncPolicy.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPASyncPolicy.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPASyncPolicy.java
deleted file mode 100644
index 9d2a518..0000000
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPASyncPolicy.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity.policy;
-
-import javax.persistence.Entity;
-import javax.persistence.Lob;
-import javax.persistence.Table;
-import org.apache.syncope.common.lib.policy.SyncPolicySpec;
-import org.apache.syncope.common.lib.types.PolicyType;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.policy.SyncPolicy;
-
-@Entity
-@Table(name = JPASyncPolicy.TABLE)
-public class JPASyncPolicy extends AbstractPolicy implements SyncPolicy {
-
-    private static final long serialVersionUID = -6090413855809521279L;
-
-    public static final String TABLE = "SyncPolicy";
-
-    @Lob
-    private String specification;
-
-    public JPASyncPolicy() {
-        super();
-        this.type = PolicyType.SYNC;
-    }
-
-    @Override
-    public SyncPolicySpec getSpecification() {
-        return POJOHelper.deserialize(specification, SyncPolicySpec.class);
-    }
-
-    @Override
-    public void setSpecification(final SyncPolicySpec policy) {
-        this.specification = POJOHelper.serialize(policy);
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
index 5900f68..e4158ea 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
@@ -50,7 +50,6 @@ import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.SyncPolicy;
 import 
org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceCheck;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
@@ -60,11 +59,12 @@ import 
org.apache.syncope.core.persistence.jpa.entity.AbstractAnnotatedEntity;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPASyncPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
 import org.identityconnectors.framework.common.objects.ObjectClass;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 
 /**
- * Resource for propagation and synchronization.
+ * Resource for propagation and pull.
  */
 @Entity
 @Table(name = JPAExternalResource.TABLE)
@@ -128,7 +128,7 @@ public class JPAExternalResource extends 
AbstractAnnotatedEntity<String> impleme
 
     @Enumerated(EnumType.STRING)
     @NotNull
-    private TraceLevel syncTraceLevel;
+    private TraceLevel pullTraceLevel;
 
     @ManyToOne(fetch = FetchType.EAGER)
     private JPAPasswordPolicy passwordPolicy;
@@ -137,7 +137,7 @@ public class JPAExternalResource extends 
AbstractAnnotatedEntity<String> impleme
     private JPAAccountPolicy accountPolicy;
 
     @ManyToOne(fetch = FetchType.EAGER)
-    private JPASyncPolicy syncPolicy;
+    private JPAPullPolicy pullPolicy;
 
     /**
      * Configuration properties that are overridden from the connector 
instance.
@@ -180,7 +180,7 @@ public class JPAExternalResource extends 
AbstractAnnotatedEntity<String> impleme
         createTraceLevel = TraceLevel.FAILURES;
         updateTraceLevel = TraceLevel.FAILURES;
         deleteTraceLevel = TraceLevel.FAILURES;
-        syncTraceLevel = TraceLevel.FAILURES;
+        pullTraceLevel = TraceLevel.FAILURES;
     }
 
     @Override
@@ -301,13 +301,13 @@ public class JPAExternalResource extends 
AbstractAnnotatedEntity<String> impleme
     }
 
     @Override
-    public TraceLevel getSyncTraceLevel() {
-        return syncTraceLevel;
+    public TraceLevel getPullTraceLevel() {
+        return pullTraceLevel;
     }
 
     @Override
-    public void setSyncTraceLevel(final TraceLevel syncTraceLevel) {
-        this.syncTraceLevel = syncTraceLevel;
+    public void setPullTraceLevel(final TraceLevel pullTraceLevel) {
+        this.pullTraceLevel = pullTraceLevel;
     }
 
     @Override
@@ -333,14 +333,14 @@ public class JPAExternalResource extends 
AbstractAnnotatedEntity<String> impleme
     }
 
     @Override
-    public SyncPolicy getSyncPolicy() {
-        return syncPolicy;
+    public PullPolicy getPullPolicy() {
+        return pullPolicy;
     }
 
     @Override
-    public void setSyncPolicy(final SyncPolicy syncPolicy) {
-        checkType(syncPolicy, JPASyncPolicy.class);
-        this.syncPolicy = (JPASyncPolicy) syncPolicy;
+    public void setPullPolicy(final PullPolicy pullPolicy) {
+        checkType(pullPolicy, JPAPullPolicy.class);
+        this.pullPolicy = (JPAPullPolicy) pullPolicy;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
index 463408e..b2e2b61 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
@@ -41,7 +41,7 @@ public abstract class AbstractProvisioningTask extends 
JPASchedTask implements P
     private static final long serialVersionUID = -4141057723006682562L;
 
     /**
-     * ExternalResource to which the sync happens.
+     * ExternalResource to which pull happens.
      */
     @ManyToOne
     private JPAExternalResource resource;
@@ -64,7 +64,7 @@ public abstract class AbstractProvisioningTask extends 
JPASchedTask implements P
     @Basic
     @Min(0)
     @Max(1)
-    private Integer syncStatus;
+    private Integer pullStatus;
 
     /**
      * @see UnmatchingRule
@@ -89,7 +89,7 @@ public abstract class AbstractProvisioningTask extends 
JPASchedTask implements P
 
     @Override
     public void setJobDelegateClassName(final String jobClassName) {
-        // fixed to SyncJob, cannot be changed
+        // fixed to PullJob, cannot be changed
     }
 
     @Override
@@ -137,13 +137,13 @@ public abstract class AbstractProvisioningTask extends 
JPASchedTask implements P
     }
 
     @Override
-    public boolean isSyncStatus() {
-        return isBooleanAsInteger(syncStatus);
+    public boolean isPullStatus() {
+        return isBooleanAsInteger(pullStatus);
     }
 
     @Override
-    public void setSyncStatus(final boolean syncStatus) {
-        this.syncStatus = getBooleanAsInteger(syncStatus);
+    public void setPullStatus(final boolean pullStatus) {
+        this.pullStatus = getBooleanAsInteger(pullStatus);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
new file mode 100644
index 0000000..66e37ff
--- /dev/null
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity.task;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import 
org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+
+@Entity
+@Table(name = JPAAnyTemplatePullTask.TABLE, uniqueConstraints =
+        @UniqueConstraint(columnNames = { "pullTask_id", "anyType_name" }))
+public class JPAAnyTemplatePullTask extends AbstractAnyTemplate implements 
AnyTemplatePullTask {
+
+    private static final long serialVersionUID = 3517381731849788407L;
+
+    public static final String TABLE = "AnyTemplatePullTask";
+
+    @Id
+    private Long id;
+
+    @ManyToOne
+    private JPAPullTask pullTask;
+
+    @Override
+    public Long getKey() {
+        return id;
+    }
+
+    @Override
+    public PullTask getPullTask() {
+        return pullTask;
+    }
+
+    @Override
+    public void setPullTask(final PullTask pullTask) {
+        checkType(pullTask, JPAPullTask.class);
+        this.pullTask = (JPAPullTask) pullTask;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplateSyncTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplateSyncTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplateSyncTask.java
deleted file mode 100644
index 3b23342..0000000
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplateSyncTask.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity.task;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
-import org.apache.syncope.core.persistence.api.entity.task.AnyTemplateSyncTask;
-import 
org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
-
-@Entity
-@Table(name = JPAAnyTemplateSyncTask.TABLE, uniqueConstraints =
-        @UniqueConstraint(columnNames = { "syncTask_id", "anyType_name" }))
-public class JPAAnyTemplateSyncTask extends AbstractAnyTemplate implements 
AnyTemplateSyncTask {
-
-    private static final long serialVersionUID = 3517381731849788407L;
-
-    public static final String TABLE = "AnyTemplateSyncTask";
-
-    @Id
-    private Long id;
-
-    @ManyToOne
-    private JPASyncTask syncTask;
-
-    @Override
-    public Long getKey() {
-        return id;
-    }
-
-    @Override
-    public SyncTask getSyncTask() {
-        return syncTask;
-    }
-
-    @Override
-    public void setSyncTask(final SyncTask syncTask) {
-        checkType(syncTask, JPASyncTask.class);
-        this.syncTask = (JPASyncTask) syncTask;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
new file mode 100644
index 0000000..e97b3c6
--- /dev/null
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity.task;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotNull;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.common.lib.types.PullMode;
+import org.apache.syncope.common.lib.types.TaskType;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.persistence.api.entity.AnyTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+
+@Entity
+@DiscriminatorValue("PullTask")
+public class JPAPullTask extends AbstractProvisioningTask implements PullTask {
+
+    private static final long serialVersionUID = -4141057723006682563L;
+
+    @Enumerated(EnumType.STRING)
+    @NotNull
+    private PullMode pullMode;
+
+    private String reconciliationFilterBuilderClassName;
+
+    @ManyToOne(fetch = FetchType.EAGER, optional = false)
+    private JPARealm destinationRealm;
+
+    @ElementCollection(fetch = FetchType.EAGER)
+    @Column(name = "actionClassName")
+    @CollectionTable(name = "PullTask_actionsClassNames",
+            joinColumns =
+            @JoinColumn(name = "pullTask_id", referencedColumnName = "id"))
+    private Set<String> actionsClassNames = new HashSet<>();
+
+    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = 
FetchType.EAGER, mappedBy = "pullTask")
+    private List<JPAAnyTemplatePullTask> templates = new ArrayList<>();
+
+    /**
+     * Default constructor.
+     */
+    public JPAPullTask() {
+        super(TaskType.PULL, null);
+    }
+
+    @Override
+    public PullMode getPullMode() {
+        return pullMode;
+    }
+
+    @Override
+    public void setPullMode(final PullMode pullMode) {
+        this.pullMode = pullMode;
+    }
+
+    @Override
+    public String getReconciliationFilterBuilderClassName() {
+        return reconciliationFilterBuilderClassName;
+    }
+
+    @Override
+    public void setReconciliationFilterBuilderClassName(final String 
reconciliationFilterBuilderClassName) {
+        this.reconciliationFilterBuilderClassName = 
reconciliationFilterBuilderClassName;
+    }
+
+    @Override
+    public Realm getDestinatioRealm() {
+        return destinationRealm;
+    }
+
+    @Override
+    public void setDestinationRealm(final Realm destinationRealm) {
+        checkType(destinationRealm, JPARealm.class);
+        this.destinationRealm = (JPARealm) destinationRealm;
+    }
+
+    @Override
+    public Set<String> getActionsClassNames() {
+        return actionsClassNames;
+    }
+
+    @Override
+    public boolean add(final AnyTemplatePullTask template) {
+        checkType(template, JPAAnyTemplatePullTask.class);
+        return this.templates.add((JPAAnyTemplatePullTask) template);
+    }
+
+    @Override
+    public AnyTemplatePullTask getTemplate(final AnyType anyType) {
+        return IterableUtils.find(templates, new Predicate<AnyTemplate>() {
+
+            @Override
+            public boolean evaluate(final AnyTemplate template) {
+                return anyType != null && 
anyType.equals(template.getAnyType());
+            }
+        });
+    }
+
+    @Override
+    public List<? extends AnyTemplatePullTask> getTemplates() {
+        return templates;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
index 5a310ba..6051f1e 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
@@ -62,9 +62,9 @@ public class JPAPushTaskAnyFilter extends 
AbstractEntity<Long> implements PushTa
     }
 
     @Override
-    public void setPushTask(final PushTask syncTask) {
-        checkType(syncTask, JPAPushTask.class);
-        this.pushTask = (JPAPushTask) syncTask;
+    public void setPushTask(final PushTask pushTask) {
+        checkType(pushTask, JPAPushTask.class);
+        this.pushTask = (JPAPushTask) pushTask;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASyncTask.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASyncTask.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASyncTask.java
deleted file mode 100644
index 30b654e..0000000
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASyncTask.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity.task;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import javax.persistence.CascadeType;
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.validation.constraints.NotNull;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.syncope.common.lib.types.SyncMode;
-import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
-import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.AnyTemplate;
-import org.apache.syncope.core.persistence.api.entity.task.AnyTemplateSyncTask;
-import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
-
-@Entity
-@DiscriminatorValue("SyncTask")
-public class JPASyncTask extends AbstractProvisioningTask implements SyncTask {
-
-    private static final long serialVersionUID = -4141057723006682563L;
-
-    @Enumerated(EnumType.STRING)
-    @NotNull
-    private SyncMode syncMode;
-
-    private String reconciliationFilterBuilderClassName;
-
-    @ManyToOne(fetch = FetchType.EAGER, optional = false)
-    private JPARealm destinationRealm;
-
-    @ElementCollection(fetch = FetchType.EAGER)
-    @Column(name = "actionClassName")
-    @CollectionTable(name = "SyncTask_actionsClassNames",
-            joinColumns =
-            @JoinColumn(name = "syncTask_id", referencedColumnName = "id"))
-    private Set<String> actionsClassNames = new HashSet<>();
-
-    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = 
FetchType.EAGER, mappedBy = "syncTask")
-    private List<JPAAnyTemplateSyncTask> templates = new ArrayList<>();
-
-    /**
-     * Default constructor.
-     */
-    public JPASyncTask() {
-        super(TaskType.SYNCHRONIZATION, null);
-    }
-
-    @Override
-    public SyncMode getSyncMode() {
-        return syncMode;
-    }
-
-    @Override
-    public void setSyncMode(final SyncMode syncMode) {
-        this.syncMode = syncMode;
-    }
-
-    @Override
-    public String getReconciliationFilterBuilderClassName() {
-        return reconciliationFilterBuilderClassName;
-    }
-
-    @Override
-    public void setReconciliationFilterBuilderClassName(final String 
reconciliationFilterBuilderClassName) {
-        this.reconciliationFilterBuilderClassName = 
reconciliationFilterBuilderClassName;
-    }
-
-    @Override
-    public Realm getDestinatioRealm() {
-        return destinationRealm;
-    }
-
-    @Override
-    public void setDestinationRealm(final Realm destinationRealm) {
-        checkType(destinationRealm, JPARealm.class);
-        this.destinationRealm = (JPARealm) destinationRealm;
-    }
-
-    @Override
-    public Set<String> getActionsClassNames() {
-        return actionsClassNames;
-    }
-
-    @Override
-    public boolean add(final AnyTemplateSyncTask template) {
-        checkType(template, JPAAnyTemplateSyncTask.class);
-        return this.templates.add((JPAAnyTemplateSyncTask) template);
-    }
-
-    @Override
-    public AnyTemplateSyncTask getTemplate(final AnyType anyType) {
-        return IterableUtils.find(templates, new Predicate<AnyTemplate>() {
-
-            @Override
-            public boolean evaluate(final AnyTemplate template) {
-                return anyType != null && 
anyType.equals(template.getAnyType());
-            }
-        });
-    }
-
-    @Override
-    public List<? extends AnyTemplateSyncTask> getTemplates() {
-        return templates;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
index 484af1e..0905533 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
@@ -23,15 +23,15 @@ import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.SyncTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 
 @SuppressWarnings("unchecked")
 public final class JPATaskUtils implements TaskUtils {
@@ -60,8 +60,8 @@ public final class JPATaskUtils implements TaskUtils {
                 result = (Class<T>) SchedTask.class;
                 break;
 
-            case SYNCHRONIZATION:
-                result = (Class<T>) SyncTask.class;
+            case PULL:
+                result = (Class<T>) PullTask.class;
                 break;
 
             case PUSH:
@@ -91,8 +91,8 @@ public final class JPATaskUtils implements TaskUtils {
                 result = (T) new JPASchedTask();
                 break;
 
-            case SYNCHRONIZATION:
-                result = (T) new JPASyncTask();
+            case PULL:
+                result = (T) new JPAPullTask();
                 break;
 
             case PUSH:
@@ -122,8 +122,8 @@ public final class JPATaskUtils implements TaskUtils {
                 result = (Class<T>) SchedTaskTO.class;
                 break;
 
-            case SYNCHRONIZATION:
-                result = (Class<T>) SyncTaskTO.class;
+            case PULL:
+                result = (Class<T>) PullTaskTO.class;
                 break;
 
             case PUSH:

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
index 26a1d4f..a26debd 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
@@ -23,17 +23,17 @@ import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.SyncTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
 import org.springframework.stereotype.Component;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 
 @Component
 public class JPATaskUtilsFactory implements TaskUtilsFactory {
@@ -46,8 +46,8 @@ public class JPATaskUtilsFactory implements TaskUtilsFactory {
     @Override
     public TaskUtils getInstance(final Task task) {
         TaskType type;
-        if (task instanceof SyncTask) {
-            type = TaskType.SYNCHRONIZATION;
+        if (task instanceof PullTask) {
+            type = TaskType.PULL;
         } else if (task instanceof PushTask) {
             type = TaskType.PUSH;
         } else if (task instanceof SchedTask) {
@@ -72,8 +72,8 @@ public class JPATaskUtilsFactory implements TaskUtilsFactory {
             type = TaskType.NOTIFICATION;
         } else if (taskClass == SchedTaskTO.class) {
             type = TaskType.SCHEDULED;
-        } else if (taskClass == SyncTaskTO.class) {
-            type = TaskType.SYNCHRONIZATION;
+        } else if (taskClass == PullTaskTO.class) {
+            type = TaskType.PULL;
         } else if (taskClass == PushTaskTO.class) {
             type = TaskType.PUSH;
         } else {

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
index a48f4c6..e5c053c 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
@@ -33,7 +33,7 @@ import javax.validation.Payload;
 @Documented
 public @interface ProvisioningTaskCheck {
 
-    String message() default 
"{org.apache.syncope.core.persistence.validation.abstractsynctask}";
+    String message() default 
"{org.apache.syncope.core.persistence.validation.provisioningtask}";
 
     Class<?>[] groups() default {};
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskValidator.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskValidator.java
index da90bd4..ef20ace 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskValidator.java
@@ -20,14 +20,14 @@ package 
org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.common.lib.types.SyncMode;
+import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTask;
-import org.apache.syncope.core.persistence.jpa.entity.task.JPASyncTask;
-import org.apache.syncope.core.provisioning.api.syncpull.PushActions;
-import org.apache.syncope.core.provisioning.api.syncpull.SyncActions;
-import 
org.apache.syncope.core.provisioning.api.syncpull.ReconciliationFilterBuilder;
+import org.apache.syncope.core.persistence.jpa.entity.task.JPAPullTask;
+import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
+import 
org.apache.syncope.core.provisioning.api.pushpull.ReconciliationFilterBuilder;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 
 public class ProvisioningTaskValidator extends 
AbstractValidator<ProvisioningTaskCheck, ProvisioningTask> {
 
@@ -60,14 +60,14 @@ public class ProvisioningTaskValidator extends 
AbstractValidator<ProvisioningTas
                     boolean isAssignable = false;
                     try {
                         actionsClass = Class.forName(className);
-                        isAssignable = task instanceof JPASyncTask
-                                ? 
SyncActions.class.isAssignableFrom(actionsClass)
+                        isAssignable = task instanceof JPAPullTask
+                                ? 
PullActions.class.isAssignableFrom(actionsClass)
                                 : task instanceof JPAPushTask
                                         ? 
PushActions.class.isAssignableFrom(actionsClass)
                                         : false;
                     } catch (Exception e) {
                         LOG.error("Invalid {} / {} specified",
-                                PushActions.class.getName(), 
SyncActions.class.getName(), e);
+                                PushActions.class.getName(), 
PullActions.class.getName(), e);
                         isValid = false;
                     }
 
@@ -82,17 +82,17 @@ public class ProvisioningTaskValidator extends 
AbstractValidator<ProvisioningTas
                 }
             }
 
-            if (isValid && task instanceof SyncTask
-                    && ((SyncTask) task).getSyncMode() == 
SyncMode.FILTERED_RECONCILIATION) {
+            if (isValid && task instanceof PullTask
+                    && ((PullTask) task).getPullMode() == 
PullMode.FILTERED_RECONCILIATION) {
 
                 Class<?> filterBuilderClass = null;
                 boolean isAssignable = false;
                 try {
-                    filterBuilderClass = Class.forName(((SyncTask) 
task).getReconciliationFilterBuilderClassName());
+                    filterBuilderClass = Class.forName(((PullTask) 
task).getReconciliationFilterBuilderClassName());
                     isAssignable = 
ReconciliationFilterBuilder.class.isAssignableFrom(filterBuilderClass);
                 } catch (Exception e) {
                     LOG.error("Invalid {} specified",
-                            ReconciliationFilterBuilder.class.getName(), 
SyncActions.class.getName(), e);
+                            ReconciliationFilterBuilder.class.getName(), 
PullActions.class.getName(), e);
                     isValid = false;
                 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml 
b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
index 72fadcd..42cb116 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
@@ -320,11 +320,11 @@ under the License.
     </attributes>
   </entity>
 
-  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
+  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplatePullTask">
     <attributes>
       <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" 
pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
+        <generated-value generator="SEQ_AnyTemplatePullTask" strategy="TABLE"/>
+        <table-generator name="SEQ_AnyTemplatePullTask" 
pk-column-value="SEQ_AnyTemplatePullTask" initial-value="1000"/>
       </id>
     </attributes>
   </entity>

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml 
b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
index 72fadcd..42cb116 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
@@ -320,11 +320,11 @@ under the License.
     </attributes>
   </entity>
 
-  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
+  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplatePullTask">
     <attributes>
       <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" 
pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
+        <generated-value generator="SEQ_AnyTemplatePullTask" strategy="TABLE"/>
+        <table-generator name="SEQ_AnyTemplatePullTask" 
pk-column-value="SEQ_AnyTemplatePullTask" initial-value="1000"/>
       </id>
     </attributes>
   </entity>

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml 
b/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
index 5fc68ea..721916c 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
@@ -368,11 +368,11 @@ under the License.
     </attributes>
   </entity>
 
-  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
+  <entity 
class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplatePullTask">
     <attributes>
       <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" 
pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
+        <generated-value generator="SEQ_AnyTemplatePullTask" strategy="TABLE"/>
+        <table-generator name="SEQ_AnyTemplatePullTask" 
pk-column-value="SEQ_AnyTemplatePullTask" initial-value="1000"/>
       </id>
     </attributes>
   </entity>

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
index 6762b7f..426a3de 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
@@ -29,17 +29,17 @@ import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
 import org.apache.syncope.common.lib.types.PolicyType;
-import org.apache.syncope.common.lib.policy.SyncPolicySpec;
+import org.apache.syncope.common.lib.policy.PullPolicySpec;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.Policy;
-import org.apache.syncope.core.persistence.api.entity.policy.SyncPolicy;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 
 @Transactional("Master")
 public class PolicyTest extends AbstractTest {
@@ -59,10 +59,10 @@ public class PolicyTest extends AbstractTest {
 
     @Test
     public void findByKey() {
-        SyncPolicy policy = policyDAO.find(3L);
+        PullPolicy policy = policyDAO.find(3L);
         assertNotNull("findById did not work", policy);
 
-        SyncPolicySpec spec = policy.getSpecification();
+        PullPolicySpec spec = policy.getSpecification();
         assertNotNull(spec);
 
         String rule = spec.getCorrelationRules().get(AnyTypeKind.USER.name());
@@ -76,33 +76,33 @@ public class PolicyTest extends AbstractTest {
 
     @Test
     public void findByType() {
-        List<? extends Policy> policies = policyDAO.find(PolicyType.SYNC);
+        List<? extends Policy> policies = policyDAO.find(PolicyType.PULL);
         assertNotNull("findById did not work", policies);
         assertFalse(policies.isEmpty());
     }
 
     @Test
     public void create() {
-        SyncPolicy policy = entityFactory.newEntity(SyncPolicy.class);
+        PullPolicy policy = entityFactory.newEntity(PullPolicy.class);
 
-        final String syncURuleName = "net.tirasa.sync.correlation.TirasaURule";
-        final String syncGRuleName = "net.tirasa.sync.correlation.TirasaGRule";
+        final String pullURuleName = "net.tirasa.pull.correlation.TirasaURule";
+        final String pullGRuleName = "net.tirasa.pull.correlation.TirasaGRule";
 
-        SyncPolicySpec syncPolicySpec = new SyncPolicySpec();
+        PullPolicySpec pullPolicySpec = new PullPolicySpec();
 
-        
syncPolicySpec.getCorrelationRules().put(anyTypeDAO.findUser().getKey(), 
syncURuleName);
-        
syncPolicySpec.getCorrelationRules().put(anyTypeDAO.findGroup().getKey(), 
syncGRuleName);
+        
pullPolicySpec.getCorrelationRules().put(anyTypeDAO.findUser().getKey(), 
pullURuleName);
+        
pullPolicySpec.getCorrelationRules().put(anyTypeDAO.findGroup().getKey(), 
pullGRuleName);
 
-        policy.setSpecification(syncPolicySpec);
-        policy.setDescription("Sync policy");
+        policy.setSpecification(pullPolicySpec);
+        policy.setDescription("Pull policy");
 
         policy = policyDAO.save(policy);
 
         assertNotNull(policy);
-        assertEquals(PolicyType.SYNC, policy.getType());
-        assertEquals(syncURuleName,
+        assertEquals(PolicyType.PULL, policy.getType());
+        assertEquals(pullURuleName,
                 
policy.getSpecification().getCorrelationRules().get(anyTypeDAO.findUser().getKey()));
-        assertEquals(syncGRuleName,
+        assertEquals(pullGRuleName,
                 
policy.getSpecification().getCorrelationRules().get(anyTypeDAO.findGroup().getKey()));
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
index f39f06f..038030e 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskTest.java
@@ -98,7 +98,7 @@ public class TaskTest extends AbstractTest {
         assertEquals(5, taskDAO.findAll(TaskType.PROPAGATION).size());
         assertEquals(1, taskDAO.findAll(TaskType.NOTIFICATION).size());
         assertEquals(1, taskDAO.findAll(TaskType.SCHEDULED).size());
-        assertEquals(10, taskDAO.findAll(TaskType.SYNCHRONIZATION).size());
+        assertEquals(10, taskDAO.findAll(TaskType.PULL).size());
         assertEquals(11, taskDAO.findAll(TaskType.PUSH).size());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
index ab0b88b..a484ac7 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
@@ -156,7 +156,7 @@ public class PlainSchemaTest extends AbstractTest {
 
     @Test
     public void deleteALong() {
-        assertEquals(6, resourceDAO.find("resource-db-sync").
+        assertEquals(6, resourceDAO.find("resource-db-pull").
                 
getProvision(anyTypeDAO.findUser()).getMapping().getItems().size());
 
         plainSchemaDAO.delete("aLong");
@@ -164,7 +164,7 @@ public class PlainSchemaTest extends AbstractTest {
 
         plainSchemaDAO.flush();
 
-        assertEquals(5, resourceDAO.find("resource-db-sync").
+        assertEquals(5, resourceDAO.find("resource-db-pull").
                 
getProvision(anyTypeDAO.findUser()).getMapping().getItems().size());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
index 6f7e8be..3df840b 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
@@ -134,7 +134,7 @@ public class ResourceTest extends AbstractTest {
             item.setIntAttrName("nonexistent" + i);
             item.setIntMappingType(IntMappingType.UserPlainSchema);
             item.setMandatoryCondition("false");
-            item.setPurpose(MappingPurpose.SYNCHRONIZATION);
+            item.setPurpose(MappingPurpose.PULL);
             mapping.add(item);
             item.setMapping(mapping);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/61a7fdd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
index 6c00347..4edc498 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
@@ -33,7 +33,7 @@ import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PropagationTaskExecStatus;
 import org.apache.syncope.common.lib.types.ResourceOperation;
-import org.apache.syncope.common.lib.types.SyncMode;
+import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
@@ -45,17 +45,17 @@ import 
org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.persistence.api.entity.task.AnyTemplateSyncTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.apache.syncope.core.provisioning.api.syncpull.SyncActions;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 
 @Transactional("Master")
 public class TaskTest extends AbstractTest {
@@ -139,8 +139,8 @@ public class TaskTest extends AbstractTest {
     }
 
     @Test
-    public void addSyncTaskExecution() {
-        SyncTask task = taskDAO.find(4L);
+    public void addPullTaskExecution() {
+        PullTask task = taskDAO.find(4L);
         assertNotNull(task);
 
         int executionNumber = task.getExecs().size();
@@ -210,18 +210,18 @@ public class TaskTest extends AbstractTest {
     }
 
     @Test
-    public void saveSyncTask() {
+    public void savePullTask() {
         ExternalResource resource = resourceDAO.find("ws-target-resource-1");
         assertNotNull(resource);
 
-        AnyTemplateSyncTask template = 
entityFactory.newEntity(AnyTemplateSyncTask.class);
+        AnyTemplatePullTask template = 
entityFactory.newEntity(AnyTemplatePullTask.class);
         template.set(new UserTO());
 
-        SyncTask task = entityFactory.newEntity(SyncTask.class);
-        task.setName("saveSyncTask");
-        task.setDescription("SyncTask description");
+        PullTask task = entityFactory.newEntity(PullTask.class);
+        task.setName("savePullTask");
+        task.setDescription("PullTask description");
         task.setActive(true);
-        task.setSyncMode(SyncMode.FULL_RECONCILIATION);
+        task.setPullMode(PullMode.FULL_RECONCILIATION);
         task.add(template);
         task.setCronExpression("BLA BLA");
         task.setMatchingRule(MatchingRule.UPDATE);
@@ -237,7 +237,7 @@ public class TaskTest extends AbstractTest {
         assertNotNull(exception);
 
         task.setCronExpression(null);
-        // this save() fails because a SyncTask requires a target resource
+        // this save() fails because a PullTask requires a target resource
         exception = null;
         try {
             taskDAO.save(task);
@@ -260,12 +260,12 @@ public class TaskTest extends AbstractTest {
         assertNotNull(exception);
 
         task.getActionsClassNames().clear();
-        task.getActionsClassNames().add(SyncActions.class.getName());
+        task.getActionsClassNames().add(PullActions.class.getName());
         // this save() finally works
         task = taskDAO.save(task);
         assertNotNull(task);
 
-        SyncTask actual = taskDAO.find(task.getKey());
+        PullTask actual = taskDAO.find(task.getKey());
         assertEquals(task, actual);
     }
 
@@ -274,21 +274,21 @@ public class TaskTest extends AbstractTest {
         ExternalResource resource = resourceDAO.find("ws-target-resource-1");
         assertNotNull(resource);
 
-        SyncTask task = entityFactory.newEntity(SyncTask.class);
+        PullTask task = entityFactory.newEntity(PullTask.class);
 
         task.setResource(resource);
         task.setName("issueSYNCOPE144");
         task.setDescription("issueSYNCOPE144 Description");
         task.setActive(true);
-        task.setSyncMode(SyncMode.FULL_RECONCILIATION);
-        task.getActionsClassNames().add(SyncActions.class.getName());
+        task.setPullMode(PullMode.FULL_RECONCILIATION);
+        task.getActionsClassNames().add(PullActions.class.getName());
         task.setMatchingRule(MatchingRule.UPDATE);
         task.setUnmatchingRule(UnmatchingRule.PROVISION);
 
         task = taskDAO.save(task);
         assertNotNull(task);
 
-        SyncTask actual = taskDAO.find(task.getKey());
+        PullTask actual = taskDAO.find(task.getKey());
         assertEquals(task, actual);
         assertEquals("issueSYNCOPE144", actual.getName());
         assertEquals("issueSYNCOPE144 Description", actual.getDescription());

Reply via email to