We had someone set up cron jobs in the backend of our website which works. But I have had to become skilled at editing the cron jobs to make sure they work etc... Not that user friendly.
There's actually a few different workarounds for this.
1. Create a custom hook that calls a script to downgrade users to a "free" membership level (with limited access) when cancelled/expired.
2. Set an email notification that gets sent to the user with a checkout link to renew their annual membership when their "free" membership level is activated.
Or using Mailchimp's automation utility, schedule an 11 month reminder after a user is added to a list. Also, you'd want to still implement a membership level downgrade script upon cancellation so the user can can login and update their billing/checkout.
I build alot of membermouse sites and generally the first thing I do is create a free "holding" level for specific cases like this, due to the way MM handles cancelled users (i.e. cancelled users access is completely restricted to the extent of not being able to login to their account).
Eddie, that "free" membership level hook is the first feasible workaround I've heard on this subject since we started with MM a couple years back. We segregate our members by membership pretty intensely, so I think we will create multiple "free" membership levels for each downgrade. All our access is restricted by bundle, not membership level.
I second mailchimp automation.