Overview of State Messages:
State Messages are sent by SCCM clients to MP in certain interval of time. The result of state messages is largely only seen in reports, various data in the console (such as number of systems needing a patch) or the client logs themselves. State messages are very small and update the condition of client’s patching or configuration management on the MP, so that you can track the progress of your deployment.
However in some cases, SCCM clients miss to send state messages of certain activities, e.g. a client get patched and rebooted, it prepare itself to send state message but got busy in other high priority works and then it forget to send that state message. Later client gets another sets of patches and it sent state message to MP updating its status with recent patches. When you check reports you find that client is non-compliant for previous months patches whereas patches were installed on the client. In this case you have to forcefully sync full state message on the client.
There is a powershell script to forcefully sync state messages on SCCM clients, but if you have large number of clients then deploying this script using SCCM would be a good idea. So why not deploy the script as a package?