Hi, Here's what I've done so far: 1. Separate prepare build from actual build - introduce PrepareBuildProjectsTask and PrepareBuildProjectsTaskExecutor 2. Model change - added ProjectScmRoot ( which is used when updating ). Fields (scmRootAddress, error, state, oldstate, projectGroup) - added scmRootAddress to Project which is the scmUrl of the root project it belongs to. - added scmResult to Project. ( the scmResult in the BuildResult object will no longer be used ) 3. Group level updates - update all projects first before building them one by one. 4. Prepare build - state goes to the ProjectScmRoot; either updated (success) or error only. - sets scmResult of project 5. Building - checks if ProjectScmRoot of the project is in successful state, otherwise, do not build - no more scmResult in the build result of a project (it's still there but no longer being used) 6. Cancelled build - no build result - project's state is set to it's previous state 7. UI - added ProjectScmRoot information - status icons: check for successful state, cross for error state - viewing of result: no result for successful state; click the cross('x') icon to view the error. 8. Notification Mail - configurable notification when scm failed. Comments, suggestions and/or violent reactions are welcome :) Thanks, -- Marica