Here, you have to use the `Split` function on the string which will break the string in the set of words using the deliminator and return you a list. Try this code: trigger MultiTaskCreate on Task (before insert) { Map<task, List<Id>> taskToUsersIds = new Map<task, List<Id>>(); for(Task ts: trigger.new){ if(ts.UserListField__c != null){ taskToUsersIds.put(ts, ts.UserListField__c.split(',')); } } List<task> taskToInsert = new List<task>(); for(Task t : taskToUsersIds.keySet()) { for(String userId : taskToUsersIds.get(t)) { Task task = new Task(); task.Assigned_To__c = userId; //You will get the UserId here task.Status = 'Completed'; task.Priority = ts.Priority; task.Communication_Type__c = ts.Communication_Type__c; task.Subject = ts.Subject; task.Name__c = ts.Name__c; taskToInsert.add(task); } } if(taskToInsert.size() > 0) insert taskToInsert; }