(Message 1 Rejected: Required tag missing:554)

When sending a login request, I send a message containing all the instructions, and I receive a message from the server containing the same information, except for the password. What is the problem?
(Connecting to 127.0.0.1 on port 25 (Source :0))
<20230614-12:01:24.000000000, FIX.4.4:########->######, outgoing>
(8=FIX.4.4​:slight_smile:9=103​:slight_smile:35=A​:slight_smile:34=1​:slight_smile:49=#######:slight_smile:52=20230614-12:01:24.000​:slight_smile:56=####:slight_smile:98=0​:slight_smile:108=30​:slight_smile:141=Y​:slight_smile:554=####:slight_smile:10=219​:slight_smile:)
<20230614-12:01:24.000000000, FIX.4.4:#########->#######, event>
(Initiated logon request)
<20230614-12:01:25.000000000, FIX.4.4#####->#######, incoming>
(8=FIX.4.4​:slight_smile:9=90​:slight_smile:35=A​:slight_smile:34=1​:slight_smile:49=######:slight_smile:52=20230614-12:01:12.496​:slight_smile:56=########:slight_smile:98=0​:slight_smile:108=30​:slight_smile:141=Y​:slight_smile:10=135​:slight_smile:)
<20230614-12:01:25.000000000, FIX.4.4:#########->#######, event>
(Message 1 Rejected: Required tag missing:554)

I don’t know which FIX engine you’re using. From the log messages it looks like a QuickFIX variant.
It seems in your DataDictionary you have marked tag 554 as required on the Logon message. But it shouldn’t be required on incoming messages (only incoming messages are validated against the dictionary), the counterparty will not echo back the password in 554.