Your code misses a couple of important aspects: The field isn't marked as changed, while the values of currentValue and dbValue differ: you previously might not have run into this, but in v4.0 this is more prominent: if dbvalue and currentvalue differ, it has to mean the field is changed, and the field has to be marked as such. Also, the entity state has to be 'fetched', otherwise dbvalue is not defined.
If you do, the DbValue will then be returned properly. In your code in the topicstart, the field isn't marked as changed, and as you ask for the dbvalue, the code simply returns null, as dbvalue isn't known: if the entity was fetched, and the field was not changed, currentvalue holds the db value so that value is returned. Your entity is new, so it will return null.
So in short: prior to reading the DbValue value written with ForcedCurrentValueWrite:
- the entity's state has to be: Fetched. If not, null is returned (as it's not known)
- additionally, if the state is Fetched, the field's changed flag has to be set. If not, currentvalue's value is returned (as that's the value read from the db)