So my answer to multitenancy is that each tenant will literally get their own instance (I fully expect them to request this level of segregation anyway, and it makes a lot of things simpler). So there'll be a client app that allows them to sign up and pay, and this will run a queue system which drives Forge/Ploi or similar to set up a new tenant.
So far, so good. But the concept I'm struggling with is the methods that the client might instigate certain events (for example, creation of the first account, changing service level, etc). Should it be push or pull; how would it be secured.
I think I'm settling on the instances calling home periodically to check for queue items, and then importing and acting on them, perhaps reporting back to close them.
If anyone's interested, I'd welcome thoughts, ideas or discussion on how best to achieve this!