So, here's what I'm trying to do. I have a client who uses a custom approval workflow which originates on a list with a few custom fields. I want to take one field in particular from that list and populate it onto each task. Now, probably the easiest way to do this, at least from a conceptual standpoint, is just to populate the field at the time of the task creation but this is problematic: this workflow already exists on this site collection and since it was created using a bunch of obsolete APIs in SharePoint 2007/VS2008 I can't just edit it and re-release it (I am making a new version of this workflow, but my client wants this fixed for the old one as well).
Is there a way to reference this using Designer or OOTB materials? Creating an event receiver that populates the column when the item is created is also problematic for two reasons:
- The original workflow has its own duties that are kicked off when the task list is updated (I believe it uses the ItemUpdated event), and it's my experience that adding another receiver that reacts to the same event breaks the workflow. Since OnCreated also calls OnUpdated, adding it to this event doesn't really help either.
- There are ~45,000 items on this list which won't be updated to add the workflow unless users specifically go in and make updates.
Another option I was looking at was programatically updating the existing 45k tasks and the inserting some kind of event receiver or timer job to take care of new additions as they come. The problem with this is, either list list is so large that this bogs way the heck down or else (I think this is more likely) there is a corrupted item somewhere in there which is causing it to take forever to call its item collection. A previous attempt to delete old task lists in our preproduction farm was aborted after it took 10 days(!) to delete about 18,000 records.
In the long term, obviously there are issues I need to get fixed on this. In the shorter term, does anyone have any suggestions?