Hi David,
I don't know if you finally solved the issue. In case you didn't, a couple of shots in the dark:
- Does the new (migrated to) Moodle server have its clock set right? Having time in the future, or in the past can have nasty to track issues.
- Do you have the exact same versions of the database engine (MySQL, Postgresql, etc.) and PHP in both the production and new (migrated to) server? I assume you are using the exact same Moodle version in both servers.
Also, if you could provide the type of LDAP server you are using (MS AD, OpenLDAP, etc.) it would also help. I could have a look at the code for that specific type of LDAP server (they handle password expiration differently).
Saludos. Iñaki.