The problem with your code each and
function was nested within another, creating a deeply nested structure. This is not only hard to read but also goes against the typical usage pattern of the and
function in ADF, which is designed to take multiple boolean expressions as arguments and evaluate them together.
Here is an improvement, please try and tell us :
@and(
equals('TRUE', activity('SourceSystemFlags').output['SAP Flags']['LOCKED?']),
equals('TRUE', activity('SourceSystemFlags').output['SAP Flags']['DATAHUB READY']),
equals('TRUE', activity('SourceSystemFlags').output['SAP Flags']['REQUEST DATA NOW']),
equals('FALSE', activity('SourceSystemFlags').output['SAP Flags']['NDP IMPORTING']),
equals('TRUE', activity('SourceSystemFlags').output['SAP Flags']['TRANSACTIONAL DATA IMPORT FLAG']),
equals('FALSE', activity('SourceSystemFlags').output['SAP Flags']['SRC SYNC ACTIVE']),
or(
equals(null, activity('SourceSystemFlags').output['SAP Flags']['REQUESTED TIMESTAMP']),
not(equals(null, activity('SourceSystemFlags').output['SAP Flags']['REQUESTED TIMESTAMP']))
)
)