Customer to Distribution Center Mapping
Hello,
I need to map specific customers to local DCs in a region. Rather than a 1-to-1 relationship, each customer could be serviced by multiple DCs.
A) I've created a Customer Forecast module that contains customer demand data by customer, product, week.
I need a mapping module that allows the end-user to make local DC selections (using a Boolean) by customer.
C) I've created a Local DC Forecast module that should bucket demand by specific customers into their assigned local DCs dimensioned by local DC, product, week.
NOTE: if a customer is serviced by two local DCs, I'd like the demand from that customer to be a simple proportion of 50/50% into each local DC. My issues is getting from point A to C. The current mapping module I've created (by local DC, customer) doesn't do the trick. I am unable to SUM or LOOKUP using it.
Thoughts on how to accomplish this?
Best Answer
-
@matt_anthony and @rob_marshall
Here's what I had envisioned. Did I happen to mention I love supply chain use cases?
Start with the customer demand
Then create an Input/Calc module (I combined this module since the dimensions are the same) You might want to separate these when you add the product and time dimension!
Many to many situation.
- Boolean allows you to determine which DC's are nearest to the customer. Maybe 1, Maybe more. You can also use your LAT / LONG logic if you have it. In this case I manually selected the DC's.
- Next Set a counter = 1 if the boolean is set. 0 if it isn't
- Create a sum of the counters
- Take the customer demand and evenly distribute to the DC's using the counters - and it works!!
Blueprint
1
Answers
-
Hmmm. Good question. Any time I encounter a use case that has a many to many relationship, Customer and DC in your case, my first inclination is to create a CALC Module (See DISCO).
- So create a module with Customer and DC as dimensions.
- Create a line item BOOLEAN that is editable and indicates which customers go with which DC's.
- Add another NUMERIC Line item in this module and set the value to "1" if the Boolean is checked, else 0.
- In your planning module, you will sum the DC's for that customer and use it to weight the demand.
Just an idea, and a little rough. But, this is how I usually handle many to many. Respond here if you'd like me to whip up an example in Anaplan for you.
1 -
Quick question, why does it have to be a Boolean? My thinking is to create a module with customers in the rows, products in the columns and having a line item for the DC, which is formatted as the DC list. That way, you can do sums and/or lookups, as well as having multiple customers going to the same DC. Does this get you home?
Rob
1 -
I think this is the approach I want to go down; however, each customer also needs to be able to be fulfilled from multiple DCs. For example Customer A may have demand of 1,000 units that gets fulfilled from Charlotte, Atlanta, and Jacksonville (333 units each; simple split 33%). Customer B may have demand of 1,000 units that gets fulfilled from Jacksonville only.
0 -
Have you looked at Optimizer? Sadly, I am far from being an expert on it, but you can read more here: https://community.anaplan.com/t5/On-Demand-Courses/Optimizer-Overview/ta-p/33894
Rob
1 -
Hi Jared, I'd love to see a mockup. Should help visualize the approach. Thank you!
0 -
Here's a little more context if it helps. We're receiving demand data as a file and planning upstream from a supply perspective (so in reverse). I've attached a picture. Essentially, I'm trying to aggregate the volume on the DC end.
0 -
Here's a little more context if it helps. We're receiving demand data as a file and planning upstream from a supply perspective (so in reverse). I've attached a picture. Essentially, I'm trying to aggregate the volume on the DC end. Sorry, not sure which thread to reply on. My apologies.
0 -
Aha! Perfect! Thanks Jared. This is very helpful!1
-
Perfect. Just take the "All Customers" Total to obtain the overall product amount by DC.
CALC01.DC Supply[SELECT: Customers.All Customers]
Or, more easily create another module with the DC list only. Then grab CALC01.DC Supply.
1 -
One last question. If Customer Demand module is modeled by Time, then I probably wouldn't want the DC Proximity module to also contain the calculation of demand by DC since this is where users will select allocations in general (not each week). That said, would you envision 4 modules to accomplish aggregation of DC Demand? I.e., 1) Customer Demand - by Customer, Product, Time; 2) DC Proximity - by Customer, DC; 3) Demand Disaggregation - by Customer, Product, DC, Time; and 4) Local DC Demand - by Product, DC, Time? Ideally, I'd like to by pass module 3 Demand Disaggregation, but it seems that there may not be an efficient way to allocate the demand appropriately due to the many:many condition...
FYI - the steps you've outlined were successful (THANK YOU!) in getting from A to C, but now I'm wondering if I can cut that passthrough module (3 Demand Disaggregation).1 -
Yes, absolutely. Avoid Subsidiary views at all costs unless absolutely necessary. Create separate modules with only the lists that are required then connect them all up with LOOKUP, SUM, and if necessary SELECT.
Great job @matt_anthony !! You're on to something big here. Haven't seen anyone come up with a creative solution to this use case yet until now! Awesome.
1 -
Thanks for the quick reply get-vidmate.com instasave.onl0 -
Thanks for the clarification. crm
0