Gonna make a few assumptions. Easiest way to wait at a resource is to add a “Pause Before”/“Pause After” or to “Incubate” by making the ODTC an eligible storage resource. Think I’ve seen from one of your previous posts that you have to do the moves via scripts, so these won’t work.
From what I know, script steps won’t execute concurrently in Cellario (for good reason because imagine having to mitigate race conditions across all your scripts and orders). Both of your wait methods will have the same effect where the script step won’t finish for 10 minutes, and you need to return control back to the scheduler earlier to run other plates/orders.
Here’s what might work. Since you can’t just end the script and move on without waiting the necessary 10 minutes, you’ll have to loop the script step in the protocol. In the script, seed the initial wait start time in PerPlateData (you can use a different data source but this might be the easiest). You’ll retrieve this each time the script runs to compare to the current time. If 10 minutes have not elapsed, find the “Loop End” step for the plate and increment the NumberOfLoops by 1 (makes the protocol re-run the script), but also add in a shorter wait time using Thread.Sleep() or Task.Delay(). That wait time depends on how often you want to finish the script step and return control back to the scheduler. If you can afford to wait like 30 seconds before releasing other plates, you won’t be as inundated with this script’s traces in the diagnostic log/order events, but feel free to be as impatient as you’d like.
Let me know if that helps.