@@ -16,6 +16,7 @@ public class WorkItemMigrationContext : MigrationContextBase
1616
1717 WorkItemMigrationConfig _config ;
1818 MigrationEngine _me ;
19+ List < String > _ignore ;
1920
2021 public override string Name
2122 {
@@ -29,6 +30,36 @@ public WorkItemMigrationContext(MigrationEngine me, WorkItemMigrationConfig conf
2930 {
3031 _me = me ;
3132 _config = config ;
33+ PopulateIgnoreList ( ) ;
34+ }
35+
36+ private void PopulateIgnoreList ( )
37+ {
38+ _ignore = new List < string > ( ) ;
39+ //ignore.Add("System.CreatedDate");
40+ //ignore.Add("System.CreatedBy");
41+ _ignore . Add ( "System.Rev" ) ;
42+ _ignore . Add ( "System.AreaId" ) ;
43+ _ignore . Add ( "System.IterationId" ) ;
44+ _ignore . Add ( "System.Id" ) ;
45+ //ignore.Add("System.ChangedDate");
46+ //ignore.Add("System.ChangedBy");
47+ _ignore . Add ( "System.RevisedDate" ) ;
48+ _ignore . Add ( "System.AttachedFileCount" ) ;
49+ _ignore . Add ( "System.TeamProject" ) ;
50+ _ignore . Add ( "System.NodeName" ) ;
51+ _ignore . Add ( "System.RelatedLinkCount" ) ;
52+ _ignore . Add ( "System.WorkItemType" ) ;
53+ _ignore . Add ( "Microsoft.VSTS.Common.ActivatedDate" ) ;
54+ _ignore . Add ( "Microsoft.VSTS.Common.StateChangeDate" ) ;
55+ _ignore . Add ( "System.ExternalLinkCount" ) ;
56+ _ignore . Add ( "System.HyperLinkCount" ) ;
57+ _ignore . Add ( "System.Watermark" ) ;
58+ _ignore . Add ( "System.AuthorizedDate" ) ;
59+ _ignore . Add ( "System.BoardColumn" ) ;
60+ _ignore . Add ( "System.BoardColumnDone" ) ;
61+ _ignore . Add ( "System.BoardLane" ) ;
62+ _ignore . Add ( "SLB.SWT.DateOfClientFeedback" ) ;
3263 }
3364
3465 internal override void InternalExecute ( )
@@ -55,7 +86,7 @@ internal override void InternalExecute()
5586 Stopwatch witstopwatch = new Stopwatch ( ) ;
5687 witstopwatch . Start ( ) ;
5788 WorkItem targetFound ;
58- targetFound = targetStore . FindReflectedWorkItem ( sourceWI , me . ReflectedWorkItemIdFieldName ) ;
89+ targetFound = targetStore . FindReflectedWorkItem ( sourceWI , me . ReflectedWorkItemIdFieldName , false ) ;
5990 Trace . WriteLine ( string . Format ( "{0} - Migrating: {1}-{2}" , current , sourceWI . Id , sourceWI . Type . Name ) , this . Name ) ;
6091 if ( targetFound == null )
6192 {
@@ -88,6 +119,7 @@ internal override void InternalExecute()
88119 if ( _config . UpdateCreatedDate ) { newwit . Fields [ "System.CreatedDate" ] . Value = sourceWI . Fields [ "System.CreatedDate" ] . Value ; }
89120 if ( _config . UpdateCreatedBy ) { newwit . Fields [ "System.CreatedBy" ] . Value = sourceWI . Fields [ "System.CreatedBy" ] . Value ; }
90121 newwit . Save ( ) ;
122+ newwit . Close ( ) ;
91123 Trace . WriteLine ( string . Format ( "...Saved as {0}" , newwit . Id ) , this . Name ) ;
92124 if ( sourceWI . Fields . Contains ( me . ReflectedWorkItemIdFieldName ) && _config . UpdateSoureReflectedId )
93125 {
@@ -116,13 +148,15 @@ internal override void InternalExecute()
116148 // sourceWI.Fields["TfsMigrationTool.ReflectedWorkItemId"].Value = destWIFound[0].Id;
117149 //sourceWI.Save();
118150 }
151+ sourceWI . Close ( ) ;
119152 witstopwatch . Stop ( ) ;
120153 elapsedms = elapsedms + witstopwatch . ElapsedMilliseconds ;
121154 current -- ;
122155 count ++ ;
123156 TimeSpan average = new TimeSpan ( 0 , 0 , 0 , 0 , ( int ) ( elapsedms / count ) ) ;
124157 TimeSpan remaining = new TimeSpan ( 0 , 0 , 0 , 0 , ( int ) ( average . TotalMilliseconds * current ) ) ;
125158 Trace . WriteLine ( string . Format ( "Average time of {0} per work item and {1} estimated to completion" , string . Format ( @"{0:s\:fff} seconds" , average ) , string . Format ( @"{0:%h} hours {0:%m} minutes {0:s\:fff} seconds" , remaining ) ) , this . Name ) ;
159+ Trace . Flush ( ) ;
126160 }
127161 //////////////////////////////////////////////////
128162 stopwatch . Stop ( ) ;
@@ -135,38 +169,14 @@ private static bool HasChildPBI(WorkItem sourceWI)
135169 return sourceWI . Title . ToLower ( ) . StartsWith ( "epic" ) || sourceWI . Title . ToLower ( ) . StartsWith ( "theme" ) ;
136170 }
137171
138- private static WorkItem CreateAndPopulateWorkItem ( WorkItemMigrationConfig config , WorkItem oldWi , Project destProject , String destType )
172+ private WorkItem CreateAndPopulateWorkItem ( WorkItemMigrationConfig config , WorkItem oldWi , Project destProject , String destType )
139173 {
140174 var fieldMappingStartTime = DateTime . UtcNow ;
141175 Stopwatch fieldMappingTimer = new Stopwatch ( ) ;
142176
143177 bool except = false ;
144178 Trace . Write ( "... Building" , "WorkItemMigrationContext" ) ;
145- List < String > ignore = new List < string > ( ) ;
146- ignore . Add ( "System.CreatedDate" ) ;
147- ignore . Add ( "System.CreatedBy" ) ;
148- ignore . Add ( "System.Rev" ) ;
149- ignore . Add ( "System.AreaId" ) ;
150- ignore . Add ( "System.IterationId" ) ;
151- ignore . Add ( "System.Id" ) ;
152- ignore . Add ( "System.ChangedDate" ) ;
153- ignore . Add ( "System.ChangedBy" ) ;
154- ignore . Add ( "System.RevisedDate" ) ;
155- ignore . Add ( "System.AttachedFileCount" ) ;
156- ignore . Add ( "System.TeamProject" ) ;
157- ignore . Add ( "System.NodeName" ) ;
158- ignore . Add ( "System.RelatedLinkCount" ) ;
159- ignore . Add ( "System.WorkItemType" ) ;
160- ignore . Add ( "Microsoft.VSTS.Common.ActivatedDate" ) ;
161- ignore . Add ( "Microsoft.VSTS.Common.StateChangeDate" ) ;
162- ignore . Add ( "System.ExternalLinkCount" ) ;
163- ignore . Add ( "System.HyperLinkCount" ) ;
164- ignore . Add ( "System.Watermark" ) ;
165- ignore . Add ( "System.AuthorizedDate" ) ;
166- ignore . Add ( "System.BoardColumn" ) ;
167- ignore . Add ( "System.BoardColumnDone" ) ;
168- ignore . Add ( "System.BoardLane" ) ;
169- ignore . Add ( "SLB.SWT.DateOfClientFeedback" ) ;
179+
170180
171181
172182 // WorkItem newwit = oldWi.Copy(destProject.WorkItemTypes[destType]);
@@ -193,7 +203,7 @@ private static WorkItem CreateAndPopulateWorkItem(WorkItemMigrationConfig config
193203
194204 foreach ( Field f in oldWi . Fields )
195205 {
196- if ( newwit . Fields . Contains ( f . ReferenceName ) && ! ignore . Contains ( f . ReferenceName ) )
206+ if ( newwit . Fields . Contains ( f . ReferenceName ) && ! _ignore . Contains ( f . ReferenceName ) )
197207 {
198208 newwit . Fields [ f . ReferenceName ] . Value = oldWi . Fields [ f . ReferenceName ] . Value ;
199209 }
@@ -211,6 +221,7 @@ private static WorkItem CreateAndPopulateWorkItem(WorkItemMigrationConfig config
211221
212222 newwit . Fields [ "System.ChangedDate" ] . Value = oldWi . Fields [ "System.ChangedDate" ] . Value ;
213223
224+
214225 switch ( destType )
215226 {
216227 case "Test Case" :
0 commit comments