diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
index b894398d932a598bc4489ab24af236355f405c9a..16bf3af4d1dc244fb525e9fed66682bba61b91ad 100644
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -481,6 +481,18 @@
 <!--AC5735FC4B1D4DC0818B4AC2B2981733-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--AC5735FC4B1D4DC0818B4AC2B2981733--></AD_MESSAGE>
 
+<!--B257BAB9053043228C7362806BFB69E9--><AD_MESSAGE>
+<!--B257BAB9053043228C7362806BFB69E9-->  <AD_MESSAGE_ID><![CDATA[B257BAB9053043228C7362806BFB69E9]]></AD_MESSAGE_ID>
+<!--B257BAB9053043228C7362806BFB69E9-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--B257BAB9053043228C7362806BFB69E9-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--B257BAB9053043228C7362806BFB69E9-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--B257BAB9053043228C7362806BFB69E9-->  <VALUE><![CDATA[SAFTR_DuplicatedTaxId]]></VALUE>
+<!--B257BAB9053043228C7362806BFB69E9-->  <MSGTEXT><![CDATA[Duplicated Tax ID]]></MSGTEXT>
+<!--B257BAB9053043228C7362806BFB69E9-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--B257BAB9053043228C7362806BFB69E9-->  <AD_MODULE_ID><![CDATA[8257C8776A0A4FB6A9284E3D3B8B6B26]]></AD_MODULE_ID>
+<!--B257BAB9053043228C7362806BFB69E9-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--B257BAB9053043228C7362806BFB69E9--></AD_MESSAGE>
+
 <!--B5221C8EF5704B8B8AC39058BAB99074--><AD_MESSAGE>
 <!--B5221C8EF5704B8B8AC39058BAB99074-->  <AD_MESSAGE_ID><![CDATA[B5221C8EF5704B8B8AC39058BAB99074]]></AD_MESSAGE_ID>
 <!--B5221C8EF5704B8B8AC39058BAB99074-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/OBMOBC_SERVICES.xml b/src-db/database/sourcedata/OBMOBC_SERVICES.xml
index 7d94df5875108846d2015880b9af9ba034974377..f54eecd32fc752c31e3eabf37167d72cb7cc2a43 100644
--- a/src-db/database/sourcedata/OBMOBC_SERVICES.xml
+++ b/src-db/database/sourcedata/OBMOBC_SERVICES.xml
@@ -34,4 +34,17 @@
 <!--750D2264212749769E23921F9955652F-->  <SERVER_RUNTIME><![CDATA[OBSTSYN_ON_CENTRAL]]></SERVER_RUNTIME>
 <!--750D2264212749769E23921F9955652F--></OBMOBC_SERVICES>
 
+<!--CAC1601327F04DF2A97872AB6D370282--><OBMOBC_SERVICES>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <OBMOBC_SERVICES_ID><![CDATA[CAC1601327F04DF2A97872AB6D370282]]></OBMOBC_SERVICES_ID>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <AD_MODULE_ID><![CDATA[8257C8776A0A4FB6A9284E3D3B8B6B26]]></AD_MODULE_ID>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <SERVICE><![CDATA[com.practicsbs.saftpt.retail.service.CheckDuplicatedFiscalDocument]]></SERVICE>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <DESCRIPTION><![CDATA[Chek duplicated tax id service]]></DESCRIPTION>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <ROUTINGTYPE><![CDATA[Failover]]></ROUTINGTYPE>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <DEFAULTTIMEOUT><![CDATA[15]]></DEFAULTTIMEOUT>
+<!--CAC1601327F04DF2A97872AB6D370282-->  <SERVER_RUNTIME><![CDATA[OBSTSYN_ON_CENTRAL]]></SERVER_RUNTIME>
+<!--CAC1601327F04DF2A97872AB6D370282--></OBMOBC_SERVICES>
+
 </data>
diff --git a/src/com/practicsbs/saftpt/retail/service/CheckDuplicatedFiscalDocument.java b/src/com/practicsbs/saftpt/retail/service/CheckDuplicatedFiscalDocument.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb34294e75daaab05065c5862d380510b2edc9ea
--- /dev/null
+++ b/src/com/practicsbs/saftpt/retail/service/CheckDuplicatedFiscalDocument.java
@@ -0,0 +1,57 @@
+package com.practicsbs.saftpt.retail.service;
+
+import javax.servlet.ServletException;
+
+import org.apache.log4j.Logger;
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.mobile.core.process.JSONProcessSimple;
+import org.openbravo.model.common.enterprise.Organization;
+
+import com.practicsbs.saftpt.SaftUtility;
+
+public class CheckDuplicatedFiscalDocument extends JSONProcessSimple {
+  private static Logger logger = Logger.getLogger(CheckDuplicatedFiscalDocument.class);
+
+  @Override
+  public JSONObject exec(JSONObject jsonsent) throws JSONException, ServletException {
+    final JSONObject data = new JSONObject();
+    final JSONObject result = new JSONObject();
+
+    OBContext.setAdminMode(false);
+    try {
+      String taxId = jsonsent.optString("taxId");
+      String businessPartnerId = jsonsent.optString("businessPartnerId");
+
+      String rootOrgDuplicatedNif = SaftUtility.isPreferenceRootOrgDuplicatedNIF();
+      if (rootOrgDuplicatedNif != null) {
+        Organization rootOrg = OBDal.getInstance().get(Organization.class, rootOrgDuplicatedNif);
+
+        if (rootOrg != null) {
+          boolean duplicated = SaftUtility.isNifDuplicated(taxId, businessPartnerId,
+              rootOrg.getId());
+
+          data.put("status", 0);
+          result.put("duplicated", duplicated);
+          data.put("data", result);
+          return data;
+        }
+      }
+      data.put("status", 0);
+      result.put("duplicated", false);
+      data.put("data", result);
+    } catch (Exception e) {
+      logger.error(e.getMessage(), e);
+      result.put("message", e.getMessage());
+      data.put("status", 0);
+      data.put("error", true);
+      data.put("data", result);
+    } finally {
+      OBContext.restorePreviousMode();
+    }
+    return data;
+  }
+
+}
