The Omni-channel feature looks great initially, but am I correct in assuming it needs the agents to all have a very static, defined set of skills and queues to manage? For example, assume I have 20 agents, 10 managing queue A and 10 managing queue B. During a work day, queue A traffic goes crazy and queue B is idle. Where in Omni-channel can an agent notify Omni-channel that 'ok, I will temporarily go and pick up some cases from Queue A to help out?'. The docs read to me as though an admin would need to re-assign users formally, which isnt very practical. Thoughts on this most appreciated!
Only option that I could think of is to fire a time dependent action in near future lets say after one hour if the owner changes to queue. If item gets assigned to any agent then make sure that time dependent action should get cancelled. Now here you wont be consuming any limits.
If the time dependent actions are firing means your queue is full and no one is accepting work items and it is firing actions (lets say any field update-gives place to write apex code in trigger) then get the volume of other free queue and move current record in the other queue if there is some space where agent could work.