public override void Execute(ExecutionContext context)
        {
            var project = context.GetWorkItemProject();
            var queryContext = new Hashtable { { "project", project.Name }, { "workitemtypename", _workItemTypeName }};

            const string wiqlTemplate = @"select [System.Id], [{0}], [{1}] from WorkItems where [System.TeamProject] = @project and [System.WorkItemType] = @workitemtypename order by [System.Id]";
            var wiql = string.Format(wiqlTemplate, _fromFieldReferenceName, _toFieldReferenceName);

            var workItems = project.Store.Query(wiql, queryContext);

            foreach (WorkItem workItem in workItems)
            {
                Debug.WriteLine(workItem.Id);
                var hasFromField = workItem.Fields.Contains(_fromFieldReferenceName);
                var hasToField = workItem.Fields.Contains(_toFieldReferenceName);
                if (hasFromField && hasToField)
                {
                    if (!workItem.IsOpen) workItem.Open();
                    workItem.Fields[_toFieldReferenceName].Value = workItem.Fields[_fromFieldReferenceName].Value;
                    workItem.Save();
                }
                else
                {
                    if (!hasFromField)
                    {
                        context.Log(string.Format("Work item '{0}' is missing field '{1}'.", workItem.Id, _fromFieldReferenceName), TraceLevel.Warning);
                    }
                    if (!hasToField)
                    {
                        context.Log(string.Format("Work item '{0}' is missing field '{1}'.", workItem.Id, _toFieldReferenceName), TraceLevel.Warning);
                    }
                }
            }
        }
        public override void Execute(ExecutionContext context)
        {
            if (context.TraceLevel >= TraceLevel.Verbose)
            {
                string traceFile;
                int count = 0;
                do
                {
                    count++;
                    traceFile = Path.Combine(context.OutputPath, string.Format("{0}-{1}-definition.xml", WorkItemTypeName, count));

                } while (File.Exists(traceFile));
                _typeDefinition.WITDElement.OwnerDocument.Save(traceFile);
            }

            var project = context.GetWorkItemProject();
            var accumulator = new ImportEventArgsAccumulator();
            project.WorkItemTypes.ImportEventHandler += accumulator.Handler;
            try
            {
                project.WorkItemTypes.Import(_typeDefinition.WITDElement);
                if (accumulator.ImportEventArgs.Count != 0)
                {
                    throw new ProvisionValidationException(string.Format("Could not import work item type definition '{0}'", WorkItemTypeName));
                }
                Thread.Sleep(5000);

                project.Store.RefreshCache();
                project.Store.SyncToCache();
            }
            catch (ProvisionValidationException)
            {
                foreach (var e in accumulator.ImportEventArgs)
                {
                    context.Log("IMPORT: " + e.Message, TraceLevel.Error);
                }
                throw;
            }
            finally
            {
                project.WorkItemTypes.ImportEventHandler -= accumulator.Handler;
            }
        }