@andybie - I think you may want to use a task if you would like an exit code 0 to result in a COMPLETE status. A little more info:
By definition, Fixlet messages are meant to be an identification and remediation of a problem. When the action of a Fixlet message is taken, it should ‘solve’ the problem.
BES Tasks, on the other hand, perform maintenance and management functions that don’t necessarily address problems. For instance, BES Tasks can be used to deploy software, restart services, or run backups. BES Tasks have the same makeup as a Fixlet messages (relevance, actions, and body), and they interact with the BES Console and BES Clients in essentially the same manner.
The only functional difference is that by default Fixlet actions will report back as ‘Fixed’ once their relevance has falsified, while by default Task actions will report back as ‘Fixed’ once all lines of its action have completed.