Hi Ben,
The settings you recommended yesterday worked and all expired volumes from all pools were moved to Scratch. Thanks.
Now all my pools have volumes with data on them in compliance with the backup policy I setup. As soon as a volume expires it gets moved to Scratch. That means the Scratch pool is the only place where Bacula can find usable volumes when needed.
Looking at the number of volumes in Scratch I can tell if I have enough for the nightly backup but this is rough estimate. To make sure there will be enough I usually will add 10-15 brand new ones in Scratch.
These new volumes in Scratch I consider like "safety buffer". Use them if needed but do not break the backup policy. Just because there are empty volumes with no data doesn't mean I want to keep data for longer then the policy defines. If I wanted to, then I would have changed the policy.
My volumes are of type files so using new volumes vs recycling expired ones just fills up the file system with old data. It makes it hard to manage and forecast filesystem space needs.
I have never understood Bacula's desire to override my policy and insist on preserving data that I already defined as useless.
I guess I'm a control freak.