Questions about creating events in device handler and processing in SmartApp

I have questions about what is the correct way to create events in a device handler and then catch them in an associated SmartApp.

The following works:
In the device handler:

parse (String description) {
	def msg = parseLanMessage(description)
	// do some stuff
	return createEvent(name: 'message', value: new JsonOutput().toJson(msg.data))
}

In the SmartApp I do:

subscribe(openhabDevice, “message”, openhabMessageHandler)

These events are processed and all is well.

The following doesn’t work:
In the device handler:

parse (String description) {
def msg = parseLanMessage(description)
// do some stuff
return createEvent(name: ‘update’, value: new JsonOutput().toJson(msg.data))
}

In the SmartApp I do:

subscribe(openhabDevice, “update”, openhabUpdateHandler)
This doesn’t work. And, looking at the logs I see that the device handler runs but there is no evidence that the SmartApp runs. Also, looking at the Events List screen there is no evidence that an event was ever created.

I’ve also tried:

subscribe(openhabDevice, “name.update”, openhabUpdateHandler)

I’ve seen this work, sometimes. It is very inconsistent.

Questions:

  1. What is the right way to do this? I would like to be able to generate events in the device handler that are processed by different handlers in the SmartApp.
  2. Is there something special about “name: ‘message’” in the parse routine.