Hi,
Yes what i believe is replacing filter array with if condition can make it easy to form an expression with "And" and "Or" and easily readable. I think you need all your existing conditions with two below new conditions,
@Or(
equals(addDays(item()?['Vervaldatum'], mul(int(string(coalesce(item()?['RemindMeXDaysBeforeExpire'], 9999))), -1), 'yyyy-MM-dd'), body('Convert_time_zone')),
equals(addDays(item()?['Vervaldatum'], -7, 'yyyy-MM-dd'), body('Convert_time_zone')),
equals(addDays(item()?['Vervaldatum'], -30, 'yyyy-MM-dd'), body('Convert_time_zone')),
equals(addDays(item()?['Vervaldatum'], -60, 'yyyy-MM-dd'), body('Convert_time_zone')),
equals(addDays(item()?['Vervaldatum'], -90, 'yyyy-MM-dd'), body('Convert_time_zone'))
)
and
We still want reminders but seperated in MONTHS instead of days/weeks and diff columns.
1. Reminders column "Eind Triennaat" : every 7 and 8 months before this date occurs
2. Reminders column "Einde contract": every 16 and 18 months before this date occurs
coming to your question , "Also, how do these all link together? Choosing between "Einde Trinnaat" and "Einde Contract" or is the system that smart",
what i understood here is you want to compare
new condition 1 ,"System date" with "Einde Trinnaat" for 7 or 8 months.
and
new condition 2, "System date" with "Einde contract": for 16 or 18 months.
So, Your first "And" group has 2 conditions,
lessOrEquals(addDays(body('Convert_time_zone'), -210, 'yyyy-MM-dd'),Eind Triennaat)
greaterOrEquals(addDays(body('Convert_time_zone'), -240, 'yyyy-MM-dd'),Eind Triennaat)
So, Your Second "And" group has 2 conditions,
lessOrEquals(addDays(body('Convert_time_zone'), -210, 'yyyy-MM-dd'),Einde contract)
greaterOrEquals(addDays(body('Convert_time_zone'), -240, 'yyyy-MM-dd'),Einde contract)

if you don't like this approach, you can keep the "filter array" then just add your new two rules in new "if conditions" and in "yes", "Send mail" action.