Allow services to be moved from one client to another by adding another option to the bulk service select option on the client profile. Add this to Billing > Services also.
In the bulk selector drop down, add an option called "Push to Client" (Screenshot shows "Move to Client", use Push), which populates an ajax search field to the right that will display the client id and name within the search drop down, similar to searching for a client when opening a ticket in the support manager as staff.
What to move
Submitting the form will move the services selected to the client specified including all child/addon services that may belong to the services being moved.
When not to move it
If there are any unpaid invoices associated with the service, it CANNOT be moved. We do not want an unpaid invoice under one client to cause a suspended service on another client.
What not to move
Anything else. No invoices, transactions, etc etc are moved. We are simply updating the Client ID associated with the service from the old client to the new client.
We should record this move in the monolog General.INFO log like we do when we updated or suspend a service, to indicate that it was moved/pushed from one client to another.