Did you try using the match and reserve function along with BOM:use custom match profile?
We wanted to use this functionality in Oracle Quoting (for a customization which we are attempting). Anyways, I opened up an SR with Oracle and got the following updates which are helpful:
The config creation process starts with the function CTO_WORKFLOW.create_config_item_wf(). This in turn calls the match API CTO_MATCH_CONFIG.perform_match(). Depending on whether you are using standard match or custom match, this API calls CTO_MATCH_CONFIG.check_config_match() or CTO_CUSTOM_MATCH_PK.find_matching_config(). Please analyze these APIs to understand how standard match works and whether you can use them as it is or you need to make some modifications to suit your needs.