ConnectWise PSA has a business rule which requires that any resource that is scheduled against a project ticket be a member of the Project Team for that ticket.
When this business rule is broken, and TimeZest tries to schedule a resource for the ticket which doesn't meet it, ConnectWise PSA will reject TimeZest's API request to create the schedule entry, which results in your end user seeing an error message, and not having their appointment scheduled.
However, TimeZest does have support for detecting this problem when scheduling with the TimeZest pod, and all it requires is some particular permissions for the TimeZest API user. These permissions were not originally required in the instructions for setting up an API user for TimeZest, so if your account is not recently created, you may not have been asked to add these permissions.
Ensuring TimeZest can check Project Team membership
TimeZest can check that a resource can be scheduled for a project ticket if the API user has the following permissions (in addition to the other permissions required by TimeZest):
Projects | Add Level | Edit Level | Delete Level | Inquire Level |
Project Headers | None | None | None | All |
Project Teams | None | None | None | All |
Additionally, in the System section, when you click Customize next to Table Setup, ensure that "Project / Project Boards" is in the Allow access to these column.
All these settings can be found by going to System then Security Roles then clicking the TimeZest security role. You'll need to be an administrator for your ConnectWise PSA instance to do this.
How it works
Once those permissions are available to TimeZest, every time somebody sends a scheduling request for a project ticket, TimeZest will check that the resource is assigned to the Project Team, and thus can be scheduled. If they aren't, you'll be shown an error like the following: