Index: src/main/java/org/apache/maven/continuum/DefaultContinuum.java
===================================================================
--- src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(revision 753031)
+++ src/main/java/org/apache/maven/continuum/DefaultContinuum.java	(working copy)
@@ -111,6 +111,7 @@
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -1689,7 +1690,7 @@
                 context = new HashMap();
 
                 // CONTINUUM-1953 olamy : attached buildDefs from template here
-                // if no group creation 
+                // if no group creation
                 if ( !projectGroupCreation && buildDefintionTemplateId > 0 )
                 {
                     buildDefinitionService.addTemplateInProject( buildDefintionTemplateId,
@@ -1715,7 +1716,7 @@
                     context.put( AbstractContinuumAction.KEY_SCM_PASSWORD, scmPassword );
                 }
                 // FIXME
-                // olamy  : read again the project to have values because store.updateProjectGroup( projectGroup ); 
+                // olamy  : read again the project to have values because store.updateProjectGroup( projectGroup );
                 // remove object data -> we don't display the project name in the build queue
                 context.put( AbstractContinuumAction.KEY_PROJECT, projectDao.getProject( project.getId() ) );
 
@@ -2760,10 +2761,17 @@
             boolean removeWorkingDirectory = false;
 
             Project p = projectDao.getProject( project.getId() );
+            ProjectScmRoot projectScmRoot = null;
 
             if ( !p.getScmUrl().equals( project.getScmUrl() ) )
             {
                 removeWorkingDirectory = true;
+                projectScmRoot = getProjectScmRootByProject( project.getId() );
+            }
+
+            if ( !p.getProjectGroup().equals( project.getProjectGroup() ) )
+            {
+                projectScmRoot = getProjectScmRootByProject( project.getId() );
             }
 
             if ( StringUtils.isEmpty( p.getScmTag() ) && !StringUtils.isEmpty( project.getScmTag() ) )
@@ -2792,6 +2800,11 @@
             }
 
             projectDao.updateProject( project );
+
+            if ( projectScmRoot != null )
+            {
+                updateProjectScmRoot( projectScmRoot, project );
+            }
         }
         catch ( ContinuumStoreException ex )
         {
@@ -3581,6 +3594,36 @@
         }
     }
 
+    private void updateProjectScmRoot( ProjectScmRoot oldScmRoot, Project project )
+        throws ContinuumException
+    {
+        try
+        {
+            removeProjectScmRoot( oldScmRoot );
+            ProjectScmRoot scmRoot =
+                projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( project.getProjectGroup().getId(),
+                                                                                    project.getScmUrl() );
+            if ( scmRoot == null )
+            {
+                ProjectScmRoot newScmRoot = new ProjectScmRoot();
+                if ( project.getScmUrl().equals( oldScmRoot.getScmRootAddress() ) )
+                {
+                    BeanUtils.copyProperties( oldScmRoot, newScmRoot, new String[] { "id", "projectGroup" } );
+                }
+                else
+                {
+                    newScmRoot.setScmRootAddress( project.getScmUrl() );
+                }
+                newScmRoot.setProjectGroup( project.getProjectGroup() );
+                projectScmRootDao.addProjectScmRoot( newScmRoot );
+            }
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while updating project.", ex );
+        }
+    }
+
     private boolean isProjectInReleaseStage( Project project )
         throws ContinuumException
     {

