How to pass arguments to a view from Rules?
I think you're making it too complicated. As per the &quot;Any other ideas on solving this would be much appreciated ...&quot; in your question, I'd rather use the Views Rules module (instead of VBO), as further detailed below.
1. About the Views Rules module
The Views Rules module makes Views data available in Rules, enabling intuitive rule configuration for dynamic data. Some details from its project page:

... provides two types of elements in Rules, configured with a &quot;Rules&quot; view display:

Views loop: A views loop is similar to a regular Rules loop, but allows looping over rows of view results.


Collect view result rows (action): This action collects each variable in all view result rows into list variables for use in Rules.


Tip: When selecting the data type for variables in the view, if the field is an entity identifier (e.g. Node ID), you can set the data type to the entity type (i.e. Node) to directly use the variable in Rules as an entity!

2. Create a view of display type 'Rules'
After you enable the Views Rules module, you can use Views to create a view of the users you're interested in. I.e. &quot;those users that hold an expiring license, and that have been issued a new invoice which remains unpaid&quot; (as in your question). Add of view of display type Rules (important, that's the key to make it work!). Here is how you can add such display:

Next configure the row variables, by using the link that says &quot;edit field info&quot;, as shown here:

You probably want to use one or more of the variables similar to those that are shown in this screenprint:

3. Create a rule using the view of display type 'Rules'
Create a rule with the appropriate Rules Actions in it, using these guidelines:

Use the link that says Add view loop to add a Views loop, and select the &quot;Rules&quot; display created in the previous step.
Configure the parameters and variable names.
For each user contained in your Views loop, perform whatever Rules Action that fits your requirement, using the variables you configured at the end of the previous step (you may have to revisit the previous step to add more similar variables there if needed). If you created the Rules row variables as suggested in the previous step, your actual eMail can use tokens such as [usermail:value], [username:value], etc.

4. Use the 'Rules Once per Day' module
Use the &quot;Rules Once per Day&quot; module. Here is how it works (as per the comment in issue 2495775, from the module owner):

You specify a trigger hour on the administration settings page for this module.
The Rule trigger will then run when cron tasks are first run after the start of that hour. The actual run time will depend on your cron task timings.

So this is another way to understand/Read this:

The &quot;Event&quot; will only be triggered when a cron job is run.
And that event will only be triggered 1 time / day, i.e. &quot;next time cron runs after the trigger hour has passed&quot;.

Easy, no?