The cause lies in the following logic: 

  1. A new contract will automatically select the current pool as the departure and arrival pool 

  2. When checking out or checking in, the current pool will be adjusted to the departure or arrival pool of the contract


Assume you have a resource with current pool 'pool A'. If you follow the first line of logic above, all contracts you create on this resource will have pool A as their default departure and arrival pool. 


After a while, you change the current resource pool to pool B. You do this by adjusting the current car pool, but leaving the contracts already scheduled on this car untouched. 


If you check out a contract later that was created when the resource still had pool A as the current pool, this contract will have 'pool A' as the departure and arrival pool.  If you do not change the departure and arrival pools to pool B at that time, the second line in the logic will cause the current pool of the car to be changed back to pool A.

Therefore, it is important that when changing the current pool of a resource, you always check the departure and arrival pools.