It’s however (at least to me) not so straightforward to implement modifying the course with these and it required lots of digging through the backend source code.
From my experience (can depend on the settings you want to modify) using them for that purpose comes with many caveats and nuances such as:
a) interacting with the complex modulestore
b) proper cache clearing after modifications as the course information is cached on multiple levels (thread-level via modulestore and in redis too, I think)
c) waiting for course related entities to be created (e.g. organization entity gets created later than the event is invoked)
d) moving logic to celery tasks as COURSE_CREATED is called from the web container
etc…