There's a working recipe on this CiviCRM wiki page. There's also an excellent discussion on the old forums here. In particular, I'd make sure you have all the modules named on that second link installed.
Just added a rules action "Unassign contact from group" to the dev release of CiviCRM 2 days ago, along with "Assign contact to group"
This will be in beta7 when it gets released in a couple of weeks, after some new PRs get tested and merged in.
If you have the user object you can use the "Load or Create CiviCRM Contact" action, then use the "Assign ...
There are a few things you can try here:
Go to CiviCRM's Administer menu >> System Settings >> CMS Database Integration. Compare the array there against the one listed in settings.php. This array (in settings.php) must be updated when you add new custom field groups to CiviCRM (since they add new tables). This is most likely your issue.
Can you create a smart group for each contact type and then use CiviGroup Roles Sync?
Also if you add contact sub type field on the user registration profile and so that you can update the contact type and role on same screen.
If you have logging on then via the ChangeLog tab on the Contact you should be able to garner some of the required info
If that doesn't help enough then go to the log_civicrm_contact/event/contribution etc tables and fire in the relevant ID and see what it has to offer
Key thing with dedupe rules is to make sure your Weights and Thresholds make ...
It sounds like you might be running the dedupe on a large database with slow MySQL performance; I've certainly seen this before. The database doesn't even have to be that big; I've seen this on databases with as few as 20,000 contacts.
The pre-set dedupes that can't be edited use a fundamentally different approach to deduping that runs MUCH faster, but it ...