private List<string> SetValues(Business.ManagedItem managedItem, DataTable dtExcelData, DataRow row)
        {
            DataRow rowPattern = dtExcelData.Rows[_ROW_SECONDARY_COLUMN_HEADINGS];
            List<string> errors = new List<string>();

            string activeWorkflow = row[_COL_ACTIVE_WF].ToString();
            string activeWorkflowState = row[_COL_ACTIVE_WF_STATE].ToString();
            if (!(string.IsNullOrEmpty(activeWorkflow) && string.IsNullOrEmpty(activeWorkflowState)))
            {
                if (string.IsNullOrEmpty(activeWorkflow) || string.IsNullOrEmpty(activeWorkflowState))
                    errors.Add("Both the ActiveWorkflow and the ActiveWorkflowState must be provided. ");

                else
                {
                    Business.Workflow workflow = managedItem.FindWorkflow(activeWorkflow);
                    if (workflow == null)
                        errors.Add(string.Format("The provided workflow '{0}' is not defined. ", activeWorkflow));
                    else
                    {
                        Business.State state = workflow.FindState(activeWorkflowState);
                        if (state == null)
                            errors.Add(string.Format("The provided ActiveWorkflowState '{0}' is not defined. ", activeWorkflowState));
                        else
                        {
                            managedItem.ActiveWorkflowID = workflow.ID;
                            managedItem.State = state;
                        }
                    }
                }
            }

            List<string> undefinedColumns = new List<string>();
            foreach (DataColumn col in dtExcelData.Columns)
            {
                if (SkipColumn(col.ColumnName))
                    continue;

                string rowColumnValue = row[col.ColumnName].ToString();

                if (rowColumnValue.Trim().Equals(_ROW_COL_NO_CHANGE))
                    continue;

                if (IsEventColumn(col.ColumnName))
                {
                    SetEvent(managedItem, rowPattern, errors, col, rowColumnValue);
                }
                else
                {
                    Business.Term term = managedItem.FindBasicTerm(col.ColumnName);

                    if (term != null)
                    {
                        if (rowColumnValue.Trim().Equals(_ROW_TERM_NULLED_OUT))
                        {
                            NullOutTerm(managedItem, undefinedColumns, col, term);
                        }
                        else
                            SetTermValue(rowPattern, errors, col, term, rowColumnValue, row);
                    }
                    else
                    {
                        errors.Add(string.Format("Term {0} not found", col.ColumnName));
                    }
                }
            }

            if (undefinedColumns.Count > 0)
                errors.Add(string.Format("The following columns are not defined: {0}. ", string.Join(",", undefinedColumns.ToArray()).TrimEnd(',')));
            return errors;
        }