I was able to solve this problem using a PreUpdateEventListener.
I looked at my Hibernate Dao objects specifically the update call. I was using update which would be detached and have the null in the oldState property.
I switched the calls to merge and now the oldState property is always populated.