Without the rest of your code it's impossible to give you the exact answer, but...
Your if test checks if the
current user is in a role, and if he is continues with the Remove:
Roles.IsUserInRole[
^]
The remove uses the username that you pass to the method:
Roles.RemoveUserFromRole[
^],
not the current user.
So, if the current logged in user (i.e. you) is in the Provisional role, then you will try to remove whoever has the username in your
username
variable from Provisional.
I'm guessing that the current logged in user is not the same as the user in
username
...use the debugger and check!