diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
index 2a005730dc..7a31fd1b76 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
@@ -641,4 +641,11 @@
parent="rmBaseWebscript">
+
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.desc.xml
new file mode 100644
index 0000000000..2b16d435ac
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.desc.xml
@@ -0,0 +1,8 @@
+
+ Delete records management relationship
+ Deletes the specified relationship.
+ /api/node/{store_type}/{store_id}/{id}/targetnode/{target_store_type}/{target_store_id}/{target_id}/uniqueName/{uniqueName}
+
+ user
+ required
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.json.ftl
new file mode 100644
index 0000000000..3b7961a392
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationship.delete.json.ftl
@@ -0,0 +1,3 @@
+{
+ "success": ${success?string}
+}
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationshiplabels.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationshiplabels.get.desc.xml
index 6518ea45a2..4d34693449 100644
--- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationshiplabels.get.desc.xml
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationshiplabels.get.desc.xml
@@ -5,5 +5,4 @@
user
required
- internal
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationships.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationships.get.desc.xml
index 2e9204be3a..ea306912b1 100644
--- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationships.get.desc.xml
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/relationships.get.desc.xml
@@ -5,5 +5,4 @@
user
required
- internal
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipDelete.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipDelete.java
new file mode 100644
index 0000000000..93237056f6
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipDelete.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2005-2014 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.module.org_alfresco_module_rm.script;
+
+import static org.alfresco.util.WebScriptUtils.getRequestParameterValue;
+import static org.alfresco.util.WebScriptUtils.getTemplateVars;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.springframework.extensions.webscripts.Cache;
+import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptException;
+import org.springframework.extensions.webscripts.WebScriptRequest;
+
+/**
+ * Implementation for Java backed webscript to delete a relationship from a node.
+ *
+ * @author Tuna Aksoy
+ * @since 2.3
+ */
+public class RelationshipDelete extends AbstractRmWebScript
+{
+ /** Constants */
+ private static final String STORE_TYPE = "target_store_type";
+ private static final String STORE_ID = "target_store_id";
+ private static final String ID = "target_id";
+ private static final String UNIQUE_NAME = "uniqueName";
+
+ /** Relationship service */
+ private RelationshipService relationshipService;
+
+ /**
+ * Gets the relationship service
+ *
+ * @return The relationship service
+ */
+ protected RelationshipService getRelationshipService()
+ {
+ return this.relationshipService;
+ }
+
+ /**
+ * Sets the relationship service
+ *
+ * @param relationshipService The relationship service
+ */
+ public void setRelationshipService(RelationshipService relationshipService)
+ {
+ this.relationshipService = relationshipService;
+ }
+
+ /**
+ * @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest,
+ * org.springframework.extensions.webscripts.Status,
+ * org.springframework.extensions.webscripts.Cache)
+ */
+ @Override
+ protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ {
+ String uniqueName = getRequestParameterValue(req, UNIQUE_NAME);
+ NodeRef source = parseRequestForNodeRef(req);
+ NodeRef target = parseRequestForTargetNodeRef(req);
+
+ getRelationshipService().removeRelationship(uniqueName, source, target);
+ getRelationshipService().removeRelationship(uniqueName, target, source);
+
+ Map model = new HashMap(1);
+ model.put(SUCCESS, true);
+ return model;
+ }
+
+ /**
+ * Gets the node reference of target
+ *
+ * @param req The webscript request
+ * @return The node reference of the target
+ */
+ private NodeRef parseRequestForTargetNodeRef(WebScriptRequest req)
+ {
+ Map templateVars = getTemplateVars(req);
+ String storeType = templateVars.get(STORE_TYPE);
+ String storeId = templateVars.get(STORE_ID);
+ String nodeId = templateVars.get(ID);
+
+ NodeRef nodeRef = new NodeRef(storeType, storeId, nodeId);
+
+ if (!getNodeService().exists(nodeRef))
+ {
+ throw new WebScriptException(HttpServletResponse.SC_NOT_FOUND, "Unable to find node: '" +
+ nodeRef.toString() + "'.");
+ }
+
+ return nodeRef;
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipsGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipsGet.java
index 134cfaf0a0..630c9f0ddf 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipsGet.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/RelationshipsGet.java
@@ -47,6 +47,7 @@ public class RelationshipsGet extends AbstractRmWebScript
/** Constants */
private static final String RELATIONSHIPS = "relationships";
private static final String RELATIONSHIP_LABEL = "relationshipLabel";
+ private static final String RELATIONSHIP_UNIQUE_NAME = "relationshipUniqueName";
/** The relationship end point */
private enum RelationshipEndPoint
@@ -172,6 +173,7 @@ public class RelationshipsGet extends AbstractRmWebScript
String nodeDetails = getJsonConversionComponent().toJSON(node, true);
JSONObject jsonObject = WebScriptUtils.createJSONObject(nodeDetails);
WebScriptUtils.putValuetoJSONObject(jsonObject, RELATIONSHIP_LABEL, label);
+ WebScriptUtils.putValuetoJSONObject(jsonObject, RELATIONSHIP_UNIQUE_NAME, relationshipDefinition.getUniqueName());
result.add(jsonObject.toString());
}