You should do this every quarter which aligns with most businesses regular cadence. However, a best practice is to incorporate data cleansing into every day processes so that it is less of a big lift at specific intervals and is instead cleaned as you go. In this way you can create a positive feedback loop where you have fresh information prioritized and as data becomes stale or outdated those records are refreshed.
For example if there are duplicates they should be updated to reflect newer, more pertinent information if needs have shifted, while maintaining historical records of shifts. Additionally, in the course of ordinary operations there should be set standards to establish at what point companies or records become disengaged such as customers who have churned. In a cancellation survey you could associate the reasons why and incorporate that feedback to improve the overall offering to avoid negative experiences to continue. In this way the system is self cleansing so that when big opportunities arise there aren’t huge roadblocks and bad data preventing successful campaigns and positive relationships and growth from contacts and businesses.