We use the x-triggered-by header in ChangeProp do break the loops between CP and RESTBase if they ever occur. The idea is that each resource_change have an x-triggered-by header and as the requests and events flow in the system, resource identifiers get appended to the header and passed forward. ChangeProp then is capable of analyzing the header and detecting loops - if one occurs it's broken and an error is logged.
However, as shown in the parent task, loops can involve more services, MCS in this particular case, so the use of the header should be expanded to all services.