Soak the cod by immersing it in a bowl of cold water for a full 48 hours. Change the water every 4-5 hours. Drain and give the cod a final rinse.
Cooking the cod: Fill a large pot of water and add 1 tablespoon olive oil, garlic cloves and bay leaves. Bring to a boil then place the cod in the boiling water and cover with a lid. Turn the burner off and let the pot sit, covered for 15-20 minutes. Drain the water and discard the garlic and bay leaves.
Cooling and flaking: Let the cod cool and flake it with a fork or using your fingers. Discard any tough, spongey pieces.
Fry the potatoes by heating the frying oil in a skillet with deep sides. Once the oil reaches 350°F add the potatoes and fry in batches until golden ( 5-6 minutes for each batch). Drain on paper towels and keep the potatoes in a warm oven (170°F).
Sauté the onions: In a separate pot or deep skillet, heat remaining ⅓ cup of olive oil. Add onions and sauté until tender.
Sauté the cod: Add the flaked cod to the pan and toss with the onions. After 2-3 minutes, turn the burner off and stir in the fresh parsley.
Prepare the sauce: Melt the butter in a separate sauce pan and whisk in the flour until a paste forms. Slowly add the milk and continue to whisk, then add the heavy cream, dijon mustard, nutmeg salt and pepper. Cook just until thickened then turn the burner off.
Assemble: Preheat oven to 350°F. Place the cod fish and onions in a casserole dish then layer the potatoes on top. Pour the bechamel sauce over the potatoes and top with parmesan and mozzarella cheeses.
Bake for 20 minutes or until the center is warm and the cheese is melted on top. To brown the top, place under a broiler for 1-3 minutes, make sure to check every 30 seconds so it doesn't burn.
Garnish with Portuguese olives, chopped parsley and serve.