...
The scheduled job should really be a workflow that handles exceptions and sends out incidents when it runs into problems. See here for what I started.
Troubleshooting
These are actually pretty straightforward data loads. If you need to re-run it due to a PeopleHub issue, you can just re-execute the scheduled job above. If you need to go back in time you can adjust the date on line 168. Right now it assumes yesterday's date.
r.setQueryParameter('changestartdate',yesterday); r.setQueryParameter('changestartdate',yesterday);