CoffeeCloud First I'd check your condition where it's checking "Future time is greater than or equal to <enddate>". See if that's always being evaluated as false possibly.
Next, I would double check your "Append to string variable" when it appends to the HTML string, make sure it's appending the right dynamic values. The peek code on mine (on the branch where an app owner is defined) looks like this:
{
"inputs": {
"name": "html",
"value": "<tr><td @{variables('styles').cellStyle}><a href=\"https://ms.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Credentials/appId/@{variables('appId')}/isMSAApp/\">@{variables('appId')}</a></td><td @{variables('styles').cellStyle}>@{variables('displayName')}</td><td @{variables('styles').cellStyle}>@{items('For_each_-_PasswordCred')?['keyId']}</td><td @{if(less(variables('daystilexpiration'),100),variables('styles').redStyle,if(less(variables('daystilexpiration'),150),variables('styles').yellowStyle,variables('styles').cellStyle))}>@{variables('daystilexpiration')} </td><td @{variables('styles').cellStyle}>Secret</td><td @{variables('styles').cellStyle}>@{formatDateTime(item()?['endDateTime'],'g')}</td><td @{variables('styles').cellStyle}><a href=\"mailto:@{body('Get_Secret_Owner')?['value'][0]?['userPrincipalName']}\">@{body('Get_Secret_Owner')?['value'][0]?['givenName']} @{body('Get_Secret_Owner')?['value'][0]?['surname']}</a></td></tr>"
}
}