You need to compute the ordered transitive closure of the previous
relationship.
(self, self.previous, self.previous.previous, etc.)
In OCL 2.3.1 it is self->asOrderedSet()->closure(previous)
then you may extract the first dummy PlanMission
(or null if there is none) by:
let c:Set(PlanMission) =
self->asOrderedSet()->closure(previous)->select(x|x.isDummy) in
if c->isEmpty() then null else select(x|x.isDummy)->first()
In section 11.9 Mapping Rules for Predefined Iterator Expressions of OCL 2.3.1 there is a definition of closure
in terms of iterate
that you may use if your tool supports an older version of OCL.