I think it is possible to detect completion of the process, even if it is not that simple, due to the distributed nature of OCFA. To detect completion, you have to look at three to four places in OCFA:
First, in the database the location field of the metadatainfo table contains the phrase '[being processed]' for all items being processed. SELECT count(*) FROM metadatainfo WHERE location = '[being processed]'; should return zero on completion.
Second, in the case a non-zero returns from previous query, you also have to check the persistent queues for messages pending. If the only messages pending are messages staying in the "never"-queue, the washing process is finished except for the evidence handled by the crashed modules. Further inspection of that evidence is necessary.
Third, in the case a non-zero returns from the query, but all persistent message queues are empty, it could be that a background process is filling the working directory before further processing can take place. This could be checked by inspecting the overall size of the separate working directories: "du -ms /var/ocfa//work/default/*"
A last step could be the inspection of "top -u ocfa" to check for module activity.
I hope this will help,
With kind regards,