The embedded crowd built into JIRA 4.3+ is fantastic as far as creating new users go, but it seems to fall short as far as managing disabled/expired accounts.
For example, I tend to use a user filter similiar to this when integrating applications with ActiveDirectory:
(&(&(&(&(objectClass=user)(objectCategory=person)(extensionAttribute3=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))))(sAMAccountName=*))
This filter excludes expired/terminated users; Users become disabled in ActiveDirectory, JIRA dutifully removes these users the next time it syncs, and then proceeds to throw error messages when you try to manipulate objects that rely on those users, such as projects with a null project lead or projects with a null user in a project role.
After much back and forth, Atlassian's support channel (a junior support engineer) basically told me they have no solution for this problem and I should open a feature request asking for JIRA to handle null users more appropriately.
It seems like I need to go back to using a filter that does not exclude disabled/expired AD accounts and resume managing the active jira user list by pruning users from groups via weekly scripts. And hance 50% of the benefit of the embedded crowd goes out the window...
Has anyone else come up with a more successful method of automating user cleanup with embedded crowd + JIRA?