Вы должны использовать Сигналы ожидания , это работает следующим образом
Применить T к X после того, как Y готов
X.apply(Wait.on(Y)).apply(T)
PCollection<Void> firstWriteResults = data.apply(ParDo.of(...write to first database...));
data.apply(Wait.on(firstWriteResults))
.apply(ParDo.of(...write to second database...));
Wait.on () может использоваться с пакетным и потоковым конвейерами
Вот еще один полезный пример