Wrap upcoming occasion creation for new contact

WIP.
It works, but some refactoring is needed:

- [x] Extract generic function composition behavior