Environment: SP2013 Enterprise, InfoPath 2013
I'm building a course registration system for a SP client but am having a little difficulty with lookup fields. Basically there are two lists, a course list and a registration list. Users pick a course from the course list and subscribe to it, and a workflow creates an entry in the registration list with the details of the course and the user who initiated the workflow. The idea is that users can view the registration list with a view that displays only the entries with their name on it, thus being able to see all the classes they are signed up for.
The problem is that sometimes the details of the courses change, especially their time/date. I need a way to automatically update all the registrations with the new time/date when this happens. Since workflows cannot iterate through a list searching for matching entries (they stop after the first match), and I want to avoid creating an event receiver due to the cost to the client, I need to make these fields update themselves.
What seems to be the answer is turning them into lookup fields that reference a unique ID for the course and pull its current time/date information. The only way I know of to do this is to create choice fields in InfoPath and have them filter the choices to only show the entry for their respective course. The problem is that by default, while the only value returned by the filter is the correct one, the fields start out blank until someone actually edits them.
So my question is, how can I set the fields to display the returned entry by default? Or is there a better way of accomplishing this than using these lookup fields?
Update: Using the default value option for the fields shows the correct values, but only when the form is opened. It doesn't appear when simply viewing the list in the browser, and cannot be used to set up a calendar view of the registrations (another requirement).
Further Updates: @Oddity suggested using web services in a workflow to get the items from a list and run a loop against them, which seems like it should work, but I need a little help with those web services. I've been reading over documentation on them but if anyone could point me to a tutorial on using it in this context that might be better.
Final Update: The workflow seems to be the way to go and I have it working down to one detail, which is the OData query. Once that is nailed down it will be the final piece of the puzzle. See my new question here for the OData part.