There seems to be a logic flaw in the way you expect to use your code. Accounts can exist in multiple domain but the necessary processing and communication to the user may not yet have occurred.

You need to be in control of the migration process. that means that you TELL the user when his account is migrated instructing them on the new logon procedure that should be used on a particular date. On that date you disable the user account in the old domain.

I would suggest that you migrate the users and computers as two separate processes.

What operating systems are you trying to migrate to the AD domain? That fact may alter the processes and tools used to accomplish the task.

You can then use NETDOM to remotely change the workstation membership to the AD domain.
Code:
NETDOM MOVE machine /Domain:domain [/OU:ou path]
[/UserD:user] [/PasswordD:[password | *]]
[/UserO:user] [/PasswordO:[password | *]]
[/UserF:user] [/PasswordF:[password | *]]
[/REBoot[:Time in seconds]]

NETDOM MOVE Moves a workstation or member server to a new domain

machine is the name of the workstation or member server to be moved

/Domain Specifies the domain to which the machine should be moved. You
can specify a particular domain controller by entering
/Domain:domain\dc. If you specify a domain controller, you
must also include the user's domain. For
example: /UserD:domain\user

/UserD User account used to make the connection with the domain
specified by the /Domain argument

/PasswordD Password of the user account specified by /UserD. A * means
to prompt for the password

/UserO User account used to make the connection with the machine to
be moved

/PasswordO Password of the user account specified by /UserO. A * means
to prompt for the password

/UserF User account used to make the connection with the machine's
former domain (with which the machine had been a member before
the move). Needed to disable the old machine account.

/PasswordF Password of the user account specified by /UserF. A * means
to prompt for the password

/OU Organizational unit under which to create the machine account.
This must be a fully qualified RFC 1779 DN for the OU.
If not specified, the account will be created under the default
organization unit for machine objects for that domain.

/REBoot Specifies that the machine should be shutdown and automatically
rebooted after the Move has completed. The number of seconds
before automatic shutdown can also be provided. Default is
30 seconds

When moving a downlevel (Windows NT version 4 or before) machine to a new
domain, the operation is not transacted. Thus, a failure during the operation
could leave the machine in an undetermined state with respect to the domain it
is joined to.

When moving a machine to a new domain, the old computer account in the
former domain is not deleted. If credentials are supplied for the former
domain, the old computer account will be disabled.

The act of moving a machine to a new domain will create an account for the
machine on the domain if it does not already exist.

Code:

NETDOM JOIN machine /Domain:domain [/OU:ou path] [/UserD:user]
[/PasswordD:[password | *]]
[UserO:user] [/PasswordO:[password | *]]
[/REBoot[:Time in seconds]]

NETDOM JOIN Joins a workstation or member server to the domain.

machine is the name of the workstation or member server to be joined

/Domain Specifies the domain which the machine should join. You
can specify a particular domain controller by entering
/Domain:domain\dc. If you specify a domain controller, you
must also include the user's domain. For
example: /UserD:domain\user

/UserD User account used to make the connection with the domain
specified by the /Domain argument

/PasswordD Password of the user account specified by /UserD. A * means
to prompt for the password

/UserO User account used to make the connection with the machine to
be joined

/PasswordO Password of the user account specified by /UserO. A * means
to prompt for the password

/OU Organizational unit under which to create the machine account.
This must be a fully qualified RFC 1779 DN for the OU.
If not specified, the account will be created under the default
organization unit for machine objects for that domain.

/REBoot Specifies that the machine should be shutdown and automatically
rebooted after the Join has completed. The number of seconds
before automatic shutdown can also be provided. Default is
30 seconds

Windows Professional machines with the ForceGuest setting enabled (which is the
default for machines not joined to a domain during setup) cannot be remotely
administered. Thus the join operation must be run directly on the machine
when the ForceGuest setting is enabled.

When joining a machine running Windows NT version 4 or before to the domain
the operation is not transacted. Thus, a failure during the operation could
leave the machine in an undetermined state with respect to the domain it is
joined to.

The act of joining a machine to the domain will create an account for the
machine on the domain if it does not already exist.

_________________________
Home page: http://www.kixhelp.com/hb/