diff --git a/org.eclipse.virgo.nano.deployer/src/main/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificator.java b/org.eclipse.virgo.nano.deployer/src/main/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificator.java
index a637dd7..917ee3d 100644
--- a/org.eclipse.virgo.nano.deployer/src/main/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificator.java
+++ b/org.eclipse.virgo.nano.deployer/src/main/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificator.java
@@ -63,6 +63,10 @@
     private static final String[] STATUS_FILENAMES_SUFFEXES = { DOT + OP_DEPLOY + DOT + SUCCESS_MARK, DOT + OP_DEPLOY + DOT + ERROR_MARK,
         DOT + OP_UNDEPLOY + DOT + SUCCESS_MARK, DOT + OP_UNDEPLOY + DOT + ERROR_MARK };
 
+    //pattern that matches the deploy status files - ".deploy.(ok|error)"
+    private static final String STATUS_FILENAMES_DEPLOY_PATTERN =  DOT + OP_DEPLOY + DOT + '(' + SUCCESS_MARK + '|' + ERROR_MARK + ')';
+    
+    
     /**
      * Deletes the current status file (if any) for the given deployable archive
      */
@@ -78,6 +82,33 @@
             }
         }
     }
+    
+    /**
+     * Deletes the first occurrence of a status file from deploy operation that matches the given war name pattern (if
+     * any). There should be one match only.
+     * 
+     * @return the war name prefix of the deleted status file or empty string, if there's no match found
+     */
+    public static String deleteStatusFileByNamePattern(String warNamePattern, File pickupDir) {
+        final File stateDir = new File(pickupDir, STATE_DIR_NAME);
+        if (stateDir.exists()) {
+            String[] statusFileNames = stateDir.list();
+            for (String stateFileName : statusFileNames) {
+                if (stateFileName.matches(warNamePattern + STATUS_FILENAMES_DEPLOY_PATTERN)) {
+                    deleteFile(new File(stateDir, stateFileName));
+                    return stateFileName.substring(0, stateFileName.lastIndexOf(OP_DEPLOY) - 1);
+                }
+            }
+        } else {
+            if (logger.isInfoEnabled()) {
+                logger.info("State directory [" + stateDir.getAbsolutePath() + "] does not exist. Therefore, there is no status file to delete.");
+            }
+        }
+        if (logger.isWarnEnabled()) {
+            logger.warn("Cannot delete any status file, as no status file matches the given warNamePattern [" + warNamePattern + "].");
+        }
+        return EMPTY_STRING;
+    }
 
     /**
      * Create status file about the given deplayable archive.
diff --git a/org.eclipse.virgo.nano.deployer/src/test/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificatorTest.java b/org.eclipse.virgo.nano.deployer/src/test/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificatorTest.java
index 6297c25..960d809 100644
--- a/org.eclipse.virgo.nano.deployer/src/test/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificatorTest.java
+++ b/org.eclipse.virgo.nano.deployer/src/test/java/org/eclipse/virgo/nano/deployer/util/StatusFileModificatorTest.java
@@ -30,6 +30,9 @@
         "src/test/resources/test/testapp1.deploy.error", "src/test/resources/test/testapp1.undeploy.error",
         "src/test/resources/test/testapp2.deploy.ok" };
 
+    private static final String[] strangeStatusFiles = { "src/test/resources/test/test#strangesymbols.undeploy.ok", 
+    	"src/test/resources/test/test#strangesymbols.deploy.ok", "src/test/resources/test/teststrangesymbols.undeploy.ok"};
+    
     @Before
     public void setUp() {
         PICKUP_DIR.createDirectory();
@@ -53,6 +56,34 @@
         StatusFileModificator.deleteStatusFile("testapp2", pickupFolder);
         assertTrue(stateFolder.list().length == 0);
     }
+    
+    @Test
+    public void deleteStatusFileByPatternTest() throws Exception {
+        STATE_DIR.createDirectory();
+        copyDummyStatusFiles();
+        File stateFolder = STATE_DIR.toFile();
+        File pickupFolder = PICKUP_DIR.toFile();
+        assertTrue(stateFolder.list().length == 5);
+        String deleted = StatusFileModificator.deleteStatusFileByNamePattern("testapp2", pickupFolder);
+        assertTrue(stateFolder.list().length == 4);
+        assertTrue("Only 'testapp2' file should be deleted : ", deleted.equals("testapp2"));
+        StatusFileModificator.deleteStatusFile("testapp1", pickupFolder);
+        assertTrue(stateFolder.list().length == 0);
+    }
+
+    @Test
+    public void deleteStatusFileByPatternStrangeSymbolsTest() throws Exception {
+        STATE_DIR.createDirectory();
+        copyStrangeStatusFiles();
+        File stateFolder = STATE_DIR.toFile();
+        File pickupFolder = PICKUP_DIR.toFile();
+        assertTrue(stateFolder.list().length == 3);
+        String deleted = StatusFileModificator.deleteStatusFileByNamePattern("test[^a-zA-Z0-9_-]strangesymbols", pickupFolder);
+        assertTrue(stateFolder.list().length == 2);
+        assertTrue("Only 'test#strangesymbols' file should be deleted: ", deleted.equals("test#strangesymbols"));
+        assertTrue("Both undeploy status files should not be deleted: ",
+            stateFolder.list()[0].contains(".undeploy.") && stateFolder.list()[1].contains(".undeploy."));
+    }
 
     @Test
     public void createStatusFileOkTest() throws Exception {
@@ -91,8 +122,16 @@
     }
 
     private void copyDummyStatusFiles() {
-        for (String dummyStatusFile : dummyStatusFiles) {
-            PathReference sourceFile = new PathReference(dummyStatusFile);
+    	copyStatusFiles(dummyStatusFiles);
+    }
+    
+    private void copyStrangeStatusFiles() {
+    	copyStatusFiles(strangeStatusFiles);
+    }
+    
+    private void copyStatusFiles(String[] files) {
+    	for (String statusFile : files) {
+            PathReference sourceFile = new PathReference(statusFile);
             assertTrue(sourceFile.exists());
             PathReference copy = sourceFile.copy(STATE_DIR);
             assertTrue(copy.exists());
diff --git "a/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.deploy.ok" "b/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.deploy.ok"
new file mode 100644
index 0000000..6674615
--- /dev/null
+++ "b/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.deploy.ok"
@@ -0,0 +1,2 @@
+bundle-id=197
+last-modified=1345737442754
diff --git "a/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.undeploy.ok" "b/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.undeploy.ok"
new file mode 100644
index 0000000..6674615
--- /dev/null
+++ "b/org.eclipse.virgo.nano.deployer/src/test/resources/test/test\043strangesymbols.undeploy.ok"
@@ -0,0 +1,2 @@
+bundle-id=197
+last-modified=1345737442754
diff --git a/org.eclipse.virgo.nano.deployer/src/test/resources/test/teststrangesymbols.undeploy.ok b/org.eclipse.virgo.nano.deployer/src/test/resources/test/teststrangesymbols.undeploy.ok
new file mode 100644
index 0000000..6674615
--- /dev/null
+++ b/org.eclipse.virgo.nano.deployer/src/test/resources/test/teststrangesymbols.undeploy.ok
@@ -0,0 +1,2 @@
+bundle-id=197
+last-modified=1345737442754
