In Dutch subordinate clauses, multiple verbs pile up at the end — these are called verb clusters (werkwoordelijke eindgroep). The basic rule for two-verb clusters: the finite (conjugated) auxiliary comes last after the past participle: Ik weet dat hij heeft gewerkt (I know that he has worked — heeft last). However, many native speakers reverse this order in speech: Ik weet dat hij gewerkt heeft (also correct and very common). Both orderings are accepted.
Three-verb clusters get more complex: Ik weet dat hij had willen gaan (I know that he had wanted to go). The order: had (past perfect auxiliary) + willen (modal past participle — but in infinitive form because it is with a full verb) + gaan (infinitive). Modal verbs in perfect constructions use the infinitive form, not the past participle: hij heeft willen gaan (not hij heeft gewild te gaan). This is the infamous Dutch IPP (Infinitivus Pro Participio) rule.
Practical approach: for spoken Dutch, focus on getting the meaning right — verb cluster order is complex even for advanced speakers and native speakers vary. For writing, apply the rules carefully: auxiliaries tend toward the end in formal written Dutch. The most important rule to get right: the finite verb (that agrees with the subject) always matches the subject in person and number, regardless of how many infinitives and participles follow it in the cluster.