diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index a811041ef3b3f09a1f18707081c0bda0ec1b3b08..dd227f13e02ac7bc18e2d718cf28b6ee34d42d24 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -3517,6 +3517,7 @@ static int vm_execmain(struct ast_channel *chan, void *data)
 	struct ast_vm_user *vmu = NULL, vmus;
 	char *context=NULL;
 	int silentexit = 0;
+	char cid[256]="";
 
 	LOCAL_USER_ADD(u);
 	memset(&vms, 0, sizeof(vms));
@@ -3576,10 +3577,21 @@ static int vm_execmain(struct ast_channel *chan, void *data)
 			goto out;
 		}
 		if (ast_strlen_zero(vms.username)) {
-			if (option_verbose > 2)
-				ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n");
-			res = 0;
-			goto out;
+				char *callerid=NULL, *name=NULL;
+				if(chan->callerid != NULL) {
+					strncpy(cid, chan->callerid, sizeof(cid) - 1);
+					ast_callerid_parse(cid, &name, &callerid);
+				}
+				if(callerid != NULL) {			
+					if (option_verbose > 2)
+					ast_verbose(VERBOSE_PREFIX_3 "No username but # key pressed. Using CID '%s'\n",callerid);
+					strncpy(vms.username, callerid, sizeof(vms.username) - 1);
+				} else {
+					if (option_verbose > 2)
+					ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n");	
+					res = 0;
+					goto out;
+				}
 		}
 		if (useadsi)
 			adsi_password(chan);