chore(system_messages): adds system message service and refactors logic

Fixes #2708
Ideally this would be protected, but it's needed for system_messages().