diff -ur l10n_server_orig/connectors/l10n_drupal/l10n_drupal.module l10n_server/connectors/l10n_drupal/l10n_drupal.module
--- l10n_server_orig/connectors/l10n_drupal/l10n_drupal.module	2011-08-31 12:38:34.000000000 +0200
+++ l10n_server/connectors/l10n_drupal/l10n_drupal.module	2011-09-02 10:16:37.000000000 +0200
@@ -14,7 +14,7 @@
  * Implementation of hook_help().
  */
 function l10n_drupal_help($path, $arg) {
-  if (($arg[0] == 'translate') && ($arg[1] == 'projects') && ($arg[3] == 'releases') && !empty($arg[4])) {
+  if (($arg[0] == 'translate') && ($arg[1] == 'projects') && ($arg[3] == 'releases') && !empty($arg[4]) && is_numeric($arg[4])) {
     $project = l10n_server_get_projects(array('uri' => $arg[2]));
     if ($project->connector_module == 'l10n_drupal_files') {
       return t('Source code parsing warnings listed here might indicate but not necessarily mean misuse of the APIs our source code parser looks at. <a href="@url">Detailed explanation and a cheat sheet of the localization API</a> can be found in the Drupal.org handbooks.', array('@url' => 'http://drupal.org/node/322729'));
diff -ur l10n_server_orig/l10n_community/l10n_community.module l10n_server/l10n_community/l10n_community.module
--- l10n_server_orig/l10n_community/l10n_community.module	2011-08-31 12:38:34.000000000 +0200
+++ l10n_server/l10n_community/l10n_community.module	2011-09-02 09:35:15.000000000 +0200
@@ -262,6 +262,15 @@
     'file' => 'pages.inc',
     'type' => MENU_CALLBACK,
   );
+  $items['translate/projects/%l10n_community_project/releases/reset/%'] = array(
+    'load arguments' => array('%map'),
+    'title' => 'Reset release',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('l10n_communinty_projects_release_reset', 2, 5),
+    'file' => 'pages.inc',
+    'access arguments' => array('start over packages'),
+    'type' => MENU_CALLBACK,
+  );
 
   return $items;
 }
@@ -347,6 +356,7 @@
     'submit suggestions',
     'moderate suggestions from others',
     'moderate own suggestions',
+    'start over packages',
   );
 }
 
diff -ur l10n_server_orig/l10n_community/pages.inc l10n_server/l10n_community/pages.inc
--- l10n_server_orig/l10n_community/pages.inc	2011-08-31 12:38:34.000000000 +0200
+++ l10n_server/l10n_community/pages.inc	2011-09-02 11:05:33.000000000 +0200
@@ -415,33 +415,93 @@
     return '';
   }
 
-  return l10n_communinty_project_releases_table($releases, $uri, $project_name);
+  return l10n_communinty_project_releases_table($releases, $uri, $project_name, TRUE, TRUE);
 }
 
 /**
  * Display metadata based on a list of releases.
  */
-function l10n_communinty_project_releases_table($releases, $project_uri, $project_name, $link_releases = TRUE) {
+function l10n_communinty_project_releases_table($releases, $project_uri, $project_name, $link_releases = TRUE, $start_over = FALSE) {
   $rows = array();
+  $start_over = $start_over && user_access('start over packages');
   foreach ($releases as $release) {
     $file_count = db_result(db_query('SELECT COUNT(*) FROM {l10n_server_file} WHERE rid = %d', $release->rid));
     $error_count = db_result(db_query('SELECT COUNT(*) FROM {l10n_server_error} WHERE rid = %d', $release->rid));
     $release_title = $project_name . ' ' . $release->title;
-    $rows[] = array(
-      $link_releases ? l($release_title, 'translate/projects/' . $project_uri . '/releases/' . $release->rid) : $release_title,
-      empty($release->download_link) ? t('n/a') : l(basename($release->download_link), $release->download_link),
-      format_date($release->file_date),
-      empty($release->last_parsed) ? t('in queue') : format_date($release->last_parsed),
-      $file_count,
-      $release->sid_count,
-      $error_count ? l($error_count, 'translate/projects/' . $project_uri . '/releases/' . $release->rid, array('fragment' => 'source-warnings')) : $error_count,
-    );
+    if ($start_over) {
+      $rows[] = array(
+        $link_releases ? l($release_title, 'translate/projects/' . $project_uri . '/releases/' . $release->rid) : $release_title,
+        empty($release->download_link) ? t('n/a') : l(basename($release->download_link), $release->download_link),
+        format_date($release->file_date),
+        empty($release->last_parsed) ? t('in queue') : format_date($release->last_parsed),
+        $file_count,
+        $release->sid_count,
+        $error_count ? l($error_count, 'translate/projects/' . $project_uri . '/releases/' . $release->rid, array('fragment' => 'source-warnings')) : $error_count,
+        l(t('Start over'), 'translate/projects/' . $project_uri . '/releases/reset/' . $release->rid),
+      );
+    }
+    else {
+      $rows[] = array(
+        $link_releases ? l($release_title, 'translate/projects/' . $project_uri . '/releases/' . $release->rid) : $release_title,
+        empty($release->download_link) ? t('n/a') : l(basename($release->download_link), $release->download_link),
+        format_date($release->file_date),
+        empty($release->last_parsed) ? t('in queue') : format_date($release->last_parsed),
+        $file_count,
+        $release->sid_count,
+        $error_count ? l($error_count, 'translate/projects/' . $project_uri . '/releases/' . $release->rid, array('fragment' => 'source-warnings')) : $error_count,
+      );
+    }
   }
+
   $header = array(t('Release'), t('Download'), t('File date'), t('Last parsed'), t('Files'), t('Strings'), t('Warnings'));
+  if ($start_over) {
+    $header[] = t('Operations');
+  }
+
   return theme('table', $header, $rows);
 }
 
 /**
+ * Form callback to display a confirm form for resetting releases.
+ */
+function l10n_communinty_projects_release_reset(&$form_state, $project_uri, $release_rid) {
+  $project = l10n_server_get_projects(array('uri' => $project_uri));
+  $releases = l10n_server_get_releases($project_uri, FALSE);
+  $release = $releases[$release_rid];
+  $form = array(
+    'project' => array(
+      '#type' => 'value',
+      '#value' => $project,
+    ),
+    'release' => array(
+      '#type' => 'value',
+      '#value' => $release,
+    ),
+  );
+  return confirm_form($form, t('Are you sure you would like to start over with %project %release on this Localization server?', array('%project' => $project->title, '%release' => $release->title)), 'translate/projects/' . $project->uri . '/releases', t('This would remove almost all data associated with the release: files, line and parsing error information. Source strings found within this project and translations for them are temporarily kept. This action cannot be undone.'));
+}
+
+/**
+ * Form submission callback for resetting projects.
+ */
+function l10n_communinty_projects_release_reset_submit($form, &$form_state) {
+  $project = l10n_server_get_projects(array('uri' => $form_state['values']['project']->uri));
+  $releases = l10n_server_get_releases($form_state['values']['project']->uri, FALSE);
+  $release = $releases[$form_state['values']['release']->rid];
+
+  if (is_object($project) && is_object($release) && $project->pid == $release->pid) {
+    module_load_include('inc', 'l10n_server', 'l10n_server.projects');
+    l10n_server_delete_release($form_state['values']['release']->rid, TRUE);
+    drupal_set_message(t('Release data for %project %release was deleted from the Localization server.', array('%project' => $project->title, '%release' => $form_state['values']['release']->title)));
+  }
+  else {
+    drupal_set_message(t('The project or the release is not found, or the selected %release release is not belongs to the %project project.', array('%project' => $form_state['values']['project']->title, '%release' => $form_state['values']['release']->title)), 'error');
+  }
+
+  $form_state['redirect'] = 'translate/projects/' . $form_state['values']['project']->uri . '/releases';
+}
+
+/**
  * Displays a page with detailed information about a release.
  *
  * @param $uri
