Solution
I would suggest to create a BoM with variants representing the key characteristics of the product. Those variants need to be editable by the sales person so that the production officer knows which component to use. For instance, we will manufacture T-shirts coming in different sizes (being a standard size) and different colors (red, blue, yellow and a custom color). For this custom color, you will never know which color the customer will want to have. It should be set as following: https://watch.screencastify.com/v/ZjfpEWS7mvSNbmGQKhBH
After this, we need to define our one-off product and its components. Let's say that the components of our t-shirts are made out of cotton and of paint. So we will make the cotton component and the paint with different colors (we actually have several other colors in stock + a generic one):https://watch.screencastify.com/v/bkPUbNgG0EUGA99HksIC
Just note here that I have used a different attribute for my paint component because it can happen that I have an additional color from a previous (custom color) sales order.
The generic attribute value for the paint will be the one we will replace in the manufacturing order should there be custom demands and that the pain is in stock.
After this, I will need to create my BoM. I will need to use the "Apply on Variants" feature hidden in the 3 little dots on the upper right corner of the components table. It would be done like this: https://watch.screencastify.com/v/vSNwY8AGPiRf3Pqxnr3h
Now, the expected flow for a regular product would look like this (given the fact that we have enough component in stock): https://watch.screencastify.com/v/cuQ708eC3m09iRdbDDnG
Now if you select the customizable product, you will not know which color you need. But you still want to base your order on a bill of material and be able to change the component. In the standard version the flow would look like this: https://watch.screencastify.com/v/vVBqRc4VGHH7RvKQntj6
It is frustrating as you know which color you will need but you cannot edit the component's table. You would here need studio and remove the condition "read only" feature. This would be made as such: https://watch.screencastify.com/v/dwmlXJrq1LWpaF9lLhm8
You might have different conditions on the products in the components table, you can remove those as well. Here be careful to understand the conditions as they are not there by chance.
Another note on the "unreserve" feature. If you don't click it, it will make a stock movement on the "Paint (Generic)" product. Here we can see that when clicking on "unreserve" and checking the availability back again, the stock movement is made on the "Paint (Orange)" product (going from 1000 to 999 in stock).
So this is how I would suggest you handle your one off production in Odoo!
Please share if you have any other solution or alternative.
Cheers
Amazing entry Adrien!! Thanks for sharing!!