Passe o bacalhau por água e coloque-o num recipiente grande. Cubra-o com água fria. Tape a tigela com pelicula aderente e deixe a demolhar no frigorífico durante 24 horas, mudando a água quatro a seis vezes.
Escorra o bacalhau, passe por água e seque-o. Coloque-o numa panela e cubra com água. Leve a lume médio/alto.
Quando levantar fervura, baixe o lume e coza durante quatro a cinco minutos. Escorra e seque-o. Desfaça o bacalhau às lascas, tendo o cuidado de retirar todas as espinhas. Coloque-o numa tigela grande.
Aqueça o forno a 175ºC.
Leve as batatas ao lume, numa panela grande com água e sal durante 15 minutos, até estarem cozidas. Escorra e corte em rodelas finas. Misture cuidadosamente com o bacalhau. Numa frigideira grande, de fundo espesso, aqueça o azeite e refogue ai as cebolas durante sete minutos, até estarem cozidas e douradas. Junte a mistura de batatas e bacalhau.
Para preparar o molho, derreta a manteiga em lume brando numa caçarola pequena. Polvilhe com a farinha e mexa até obter uma pasta cremosa. Retire da chama, junte o leite e bata vigorosamente. Leve de novo a lume médio.
Quando levantar fervura, deixe cozer a farinha durante cinco minutos, mexendo constantemente, até a mistura engrossar.
Retire do lume e tempere com sal, pimenta e pimenta de Caiena.
Misture cuidadosamente com o preparado anterior. Coloque tudo numa assadeira média. Polvilhe com salsa e cubra com queijo ralado.
Leve ao forno durante 35 a 40 minutos, até estar dourado e a fervilhar.