Let's reset: You now have a complex network consisting of many FCs, carriers, methods, and packaging types. At this stage, complexity is further increased with an expanding SKU portfolio and diversified channel distribution. Maybe you have physical stores now, too.
It is at this point where the order-level decision making needs to be improved beyond static rulesets and policies that has likely been unchanged in your OMS for years. In the past, the OMS might have handled orders with a basic rule like "If shipping to this state, use that carrier" applied to all orders. It's time to evolve that.
The answer is dynamic order routing across the complex network on an order-by-order basis. "Shipment Generation" is another term.
The key is to move decisions down to the order level as opposed to the system level. For example, for a given order, don't use a static rule from the OMS that applies to all orders, but instead look at real-time properties of your network to make decisions: What are inventory levels at each FC? Where is the buyer located? What are the dimweights of all SKUs? What does future inventory probably look like? Does it make sense to send as split shipments or as one? From which FC? And so on.
Shipment generation is a hard problem to solve. There is no existing commercial system that does it properly for ecommerce. Technology teams constantly have to build customized software on top of their OMS, WMS, TMS, and IMS, but even then many of the decisions aren't modeled properly.