diff --git a/libraries/datahandler/src/main/thrift/components.thrift b/libraries/datahandler/src/main/thrift/components.thrift
index f6fc28c298..f4f5a59c74 100644
--- a/libraries/datahandler/src/main/thrift/components.thrift
+++ b/libraries/datahandler/src/main/thrift/components.thrift
@@ -405,6 +405,7 @@ struct ComponentDTO {
     51: optional string mailinglist,
     52: optional string wiki,
     53: optional string blog,
+    56: optional string vcs,
 }
 
 struct ReleaseLink{
diff --git a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/component/Sw360ComponentService.java b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/component/Sw360ComponentService.java
index c32b7cbf63..7839841720 100644
--- a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/component/Sw360ComponentService.java
+++ b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/component/Sw360ComponentService.java
@@ -46,6 +46,8 @@
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import static org.eclipse.sw360.datahandler.common.CommonUtils.getSortedMap;
@@ -147,6 +149,14 @@ public Component createComponent(Component component, User sw360User) throws TEx
     public RequestStatus updateComponent(Component component, User sw360User) throws TException {
         ComponentService.Iface sw360ComponentClient = getThriftComponentClient();
         RequestStatus requestStatus;
+        if (CommonUtils.isNotNullEmptyOrWhitespace(component.getVcs())) {
+	        String urlRegex = "^(https?://)[a-zA-Z0-9+&@#/%?=~_|!:,.;-]*[a-zA-Z0-9+&@#/%=~_|]$";
+	        Pattern urlPattern = Pattern.compile(urlRegex);
+	        Matcher matcher = urlPattern.matcher(component.getVcs());
+	        boolean isValidUrl=matcher.matches();
+	        if(!isValidUrl)
+	        	throw new RuntimeException("sw360 component with name '" + component.getName() + " cannot be updated as vcs url is invalid");
+        }
         if (Sw360ResourceServer.IS_FORCE_UPDATE_ENABLED) {
             requestStatus = sw360ComponentClient.updateComponentWithForceFlag(component, sw360User, true);
         } else {
diff --git a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/core/RestControllerHelper.java b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/core/RestControllerHelper.java
index 1b48bc2dc0..41dc3bb1e2 100644
--- a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/core/RestControllerHelper.java
+++ b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/core/RestControllerHelper.java
@@ -120,6 +120,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -675,6 +676,9 @@ public Component convertToComponent(ComponentDTO componentDTO) {
         component.setMailinglist(componentDTO.getMailinglist());
         component.setWiki(componentDTO.getWiki());
         component.setBlog(componentDTO.getBlog());
+        if(componentDTO.getVcs()!=null && Objects.nonNull(componentDTO.getVcs())) {
+        	component.setVcs(componentDTO.getVcs().trim());
+        }
 
         return component;
     }