Put the dried beans in a large bowl, cover with plenty of cold water, stir in the salt, then leave the beans to soak overnight.
Preheat the oven to 160°C.
Put half of the rosemary sprigs into a roasting tray, place the lamb shoulder on top and cover with the remaining rosemary. Pour a little water into the tray, sprinkle the lamb with salt, cover with foil and roast for about 4 hours, until the meat is soft and tender.
Remove the foil, turn the oven up to 200°C and roast for another 20–30 minutes, until the fat is crisp and golden.
Roast the tomatoes for the last hour of the lower oven temperature. To do this, put the tomatoes onto a baking sheet, drizzle with olive oil and sprinkle with salt. Roast until they are soft and starting to catch colour.
Meanwhile, drain the soaked flageolet beans, put them into a pan, cover with cold water, bring to the boil and boil rapidly for 5 minutes. Drain, rinse and return to the pan with the garlic and bay leaves. Cover with cold water, bring to the boil again and simmer gently until the beans are tender, about 40 minutes. Drain, reserving the beans and cooking water separately. Discard the bay leaves.
Melt the fat in an ovenproof pan and sauté the onion gently for about 20 minutes. Add the beans (and garlic if you like) and fry gently until the beans start to catch a little, about 10 minutes, then loosen with some of the reserved cooking water to make a creamy mixture. Off the heat, stir in the preserved lemon rind, then transfer it to the still warm oven.
Tear four small handfuls of lamb into bite-sized pieces. Put a heavy-based frying pan over a high heat and cook the lamb (without oil) until crispy on both sides, about 3–4 minutes per batch. Spoon the beans onto plates and spread it out a little, then top with crispy lamb shards and nestle the roast tomatoes a lemon quarter alongside. Serve with steamed broccoli or greens.