*/
        public void testCreateFolder() {
 
-               String folderName = "testCreateFolder" + mCurrentDate;
                String remotePath = "/testCreateFolder" + mCurrentDate;
                boolean createFullPath = true;
                
-               RemoteOperationResult result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               RemoteOperationResult result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.isSuccess() || result.getCode() == ResultCode.TIMEOUT);
                
                // Create Subfolder
-               folderName = "testCreateFolder" + mCurrentDate;
                remotePath = "/testCreateFolder" + mCurrentDate + "/" + "testCreateFolder" + mCurrentDate;
                createFullPath = true;
                
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.isSuccess() || result.getCode() == ResultCode.TIMEOUT);
        }
        
        public void testCreateFolderSpecialCharacters() {               
                boolean createFullPath = true;
                
-               String folderName = "testSpecialCharacters_//" + mCurrentDate;
-               String remotePath = "/testSpecialCharacters_//" + mCurrentDate;
-               RemoteOperationResult result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               String remotePath = "/testSpecialCharacters_\\" + mCurrentDate;
+               RemoteOperationResult result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_\\" + mCurrentDate;
-               remotePath = "/testSpecialCharacters_\\" + mCurrentDate;                
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
-               assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
-               
-               folderName = "testSpecialCharacters_<" + mCurrentDate;
                remotePath = "/testSpecialCharacters_<" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_>" + mCurrentDate;
                remotePath = "/testSpecialCharacters_>" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_:" + mCurrentDate;
                remotePath = "/testSpecialCharacters_:" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_\"" + mCurrentDate;
                remotePath = "/testSpecialCharacters_\"" + mCurrentDate;                
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_|" + mCurrentDate;
                remotePath = "/testSpecialCharacters_|" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_?" + mCurrentDate;
                remotePath = "/testSpecialCharacters_?" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
                
-               folderName = "testSpecialCharacters_*" + mCurrentDate;
                remotePath = "/testSpecialCharacters_*" + mCurrentDate;         
-               result =  mActivity.createFolder(folderName, remotePath, createFullPath);
+               result =  mActivity.createFolder(remotePath, createFullPath);
                assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
        }
 
 
 
        /**
         * Access to the library method to Create a Folder
-        * @param folderName
         * @param remotePath
         * @param createFullPath
         * @return
         */
-       public RemoteOperationResult createFolder(String folderName, String remotePath, boolean createFullPath) {
+       public RemoteOperationResult createFolder(String remotePath, boolean createFullPath) {
                
-               CreateRemoteFolderOperation createOperation = new CreateRemoteFolderOperation(folderName, remotePath, createFullPath);
+               CreateRemoteFolderOperation createOperation = new CreateRemoteFolderOperation(remotePath, createFullPath);
                RemoteOperationResult result =  createOperation.execute(mClient);
                
                return result;
 
     private static final int CONNECTION_TIMEOUT = 5000;
     
 
-    protected String mFolderName;
     protected String mRemotePath;
     protected boolean mCreateFullPath;
     
     /**
      * Constructor
      * 
-     * @param folderName                       Name of new directory
      * @param remotePath            Full path to the new directory to create in the remote server.
      * @param createFullPath        'True' means that all the ancestor folders should be created if don't exist yet.
      */
-    public CreateRemoteFolderOperation(String folderName, String remotePath, boolean createFullPath) {
-       mFolderName = folderName;
+    public CreateRemoteFolderOperation(String remotePath, boolean createFullPath) {
         mRemotePath = remotePath;
         mCreateFullPath = createFullPath;
     }
         RemoteOperationResult result = null;
         MkColMethod mkcol = null;
         
-        boolean noInvalidChars = FileUtils.validateName(mFolderName);
+        boolean noInvalidChars = FileUtils.validatePath(mRemotePath);
         if (noInvalidChars) {
                try {
                        mkcol = new MkColMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath));
 
     
     private RemoteOperationResult createParentFolder(String parentPath, WebdavClient client) {
-        RemoteOperation operation = new CreateRemoteFolderOperation("", parentPath,
+        RemoteOperation operation = new CreateRemoteFolderOperation(parentPath,
                                                                 mCreateFullPath);
         return operation.execute(client);
     }
 
                boolean result = true;
                
                Log.d("FileUtils", "fileName =======" + fileName);
-               String name = fileName.substring(1);
-               if ((fileName.indexOf("/") > 0 && name.indexOf("/") < (name.length() - 1 ) ) || 
+               if (fileName.contains(PATH_SEPARATOR) ||
                                fileName.contains("\\") || fileName.contains("<") || fileName.contains(">") ||
                                fileName.contains(":") || fileName.contains("\"") || fileName.contains("|") || 
                                fileName.contains("?") || fileName.contains("*")) {
                }
                return result;
        }
+       
+       /**
+        * Validate the path to detect if contains any forbidden character: \ , < , > , : , " , | , ? , *
+        * @param path
+        * @return
+        */
+       public static boolean validatePath(String path) {
+               boolean result = true;
+               
+               Log.d("FileUtils", "path ....... " + path);
+               if (path.contains("\\") || path.contains("<") || path.contains(">") ||
+                               path.contains(":") || path.contains("\"") || path.contains("|") || 
+                               path.contains("?") || path.contains("*")) {
+                       result = false;
+               }
+               return result;
+       }
 }
 
         RemoteOperation operation = new ExistenceCheckOperation(pathToGrant, this, false);
         RemoteOperationResult result = operation.execute(mUploadClient);
         if (!result.isSuccess() && result.getCode() == ResultCode.FILE_NOT_FOUND && mCurrentUpload.isRemoteFolderToBeCreated()) {
-            operation = new CreateFolderOperation(  mCurrentUpload.getFileName(),
-                    pathToGrant,
+            operation = new CreateFolderOperation( pathToGrant,
                     true,
                     mStorageManager    );
             result = operation.execute(mUploadClient);
 
     
     private static final String TAG = CreateFolderOperation.class.getSimpleName();
     
-    protected String mFolderName;
     protected String mRemotePath;
     protected boolean mCreateFullPath;
     protected FileDataStorageManager mStorageManager;
     /**
      * Constructor
      * 
-     * @param remotePath            Full path to the new directory to create in the remote server.
      * @param createFullPath        'True' means that all the ancestor folders should be created if don't exist yet.
      * @param storageManager        Reference to the local database corresponding to the account where the file is contained. 
      */
-    public CreateFolderOperation(String folderName, String remotePath, boolean createFullPath, FileDataStorageManager storageManager) {
-        mFolderName = folderName;
+    public CreateFolderOperation(String remotePath, boolean createFullPath, FileDataStorageManager storageManager) {
         mRemotePath = remotePath;
         mCreateFullPath = createFullPath;
         mStorageManager = storageManager;
 
     @Override
     protected RemoteOperationResult run(WebdavClient client) {
-        CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mFolderName, mRemotePath, mCreateFullPath);
+        CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mRemotePath, mCreateFullPath);
         RemoteOperationResult result =  operation.execute(client);
         
         if (result.isSuccess()) {
 
 
                 // Create directory
                 path += newDirectoryName + OCFile.PATH_SEPARATOR;
-                RemoteOperation operation = new CreateFolderOperation(newDirectoryName, path, false, mStorageManager);
+                RemoteOperation operation = new CreateFolderOperation(path, false, mStorageManager);
                 operation.execute(  getAccount(), 
                         FileDisplayActivity.this, 
                         FileDisplayActivity.this,