I did this once with a 200. I had to separate out the voicemail ports, and assign some to each tenant group in separate hunt groups.. Then on say tenants 2 and 3, they had to be set to use alternative greetings instead of the primary greeting sets. My issue with this is that I run out of voicemail ports quickly, couldn't have separate dial-by-names, and couldn't have different day/night auto-attendants.
In general I hate tenanting. I can't ever seem to make everyone happy. Usually they get a PRI to split costs, and then because it's assigned to tenant 1, when any of the other tenants puts a call on hold, they hear the wrong MOH. Same thing for a shared sip trunks. I'd love to hear if someone has a way around these issues.