Where my CPQ peeps at?

We are in the implementation phase going into Epicor Kinetic SaaS where we will rely heavily on Epicor CPQ (formerly KBM) to enter line items on Quotes and Orders. In order to avoid replicating data in Kinetic and CPQ (while same company, not same data sources) we will run the CPQ Sync, but in order to get all the information I want to use in CPQ I have setup a custom BAQ. Now I see the CPQ BAQ Sync tool and know more or less how to schedule this, there is no “Drop Tables” option when using a custom BAQ. I guess I will figure out when running this if it does overwrite or potentially duplicate.
Anyone on here also using Epicor CPQ - Kinetic?
Any advice?

1 Like

Hi Tory - we’re in the implementation phase as well and are developing several CPQ configurators, one for each of our product lines. So at the very least, I just wanted to connect with someone else also working on CPQ development.

We’re testing the use of BAQs to call in information into CPQ to help add up prices and weight of final unit, but I don’t think anything in our BAQs will write back into Kinetic. So I’m guessing for your application you’ll find out in testing (sorry I didn’t have a concrete answer).

Good luck in your CPQ development!

We’re getting there too! I can’t help on the BAQ sync yet. Just wanted to add a +2 for all of us CPQ folks to start helping each other as we learn. I did the MOM sync from Epicor into CPQ, but haven’t looked into the CPQ database to see what that looks like.

Is there a KBMax forum somewhere? I’d imagine there should be lots of legacy information out there.


I found you can schedule CPQ BAQ syncs to run periodically. I’ve got two setup right now, but have a few more planned to export mostly parts and operations. I use the Part Group to group some parts to be filtered into cascading drop down lists. In kinetic look for CPQ BAQ Sync. Then in CPQ create a table from database source and pull in that data as a table.

I don’t know of a KBMax specific forum, but there are some sources of information to which I’ve been referred:
Legacy info: Epicor CPQ - Epicor CPQ
Current site: https://cpqhelp.zendesk.com/hc/en-us

May be links to information you already have, but might help.

Have you made progress with the prices and weights? I’m not quite sure where to start - we’re looking to pull the cost (PartCost.FIFOAvgTotalCost) and weight (Part.NetWeight) out of Epicor into CPQ. Depending on an CPQ option, we’ll multiply the sum or component costs by a mark-up % to get the configured price.

Is a BAQ sync the way to go? We’ve got 150k part numbers in Epicor, and I’d rather not bring them all in to CPQ, but if it’s just bits into a database, does it really matter for performance?

Might as well tag the few other CPQ peeps here! @espa, @doug.harvey, and possibly @Jonathan_Lang from his Stellar days?

Assuming your product weights do not change very often. A BAQ sync is probably the way to go. Even with that many parts if the sync takes a few minutes, it should not matter. Then you are just doing a table lookup within CPQ and there should not be a performance issue. Same is true for Cost. If you need more dynamic/up to date data then you need to do an API call. For example. If someone reconfigures a make direct part, we want to know if there is already a job. Which could change at any time. Since jobnum is no longer included in the context functions, we will need to use the API call. It does not look too hard but I have not actually done it yet. I’ll let you know once I make it work.

We use CPQ BAQ sync for our parts, including weight and price. Most of this is static, doesn’t change that often. When we do have a change, we just run a one-off BAQ sync. This works for us.

We have 6 BAQ syncing every 15 minutes. They are small, nothing close to 150k parts, but this does not seem to slow down our system. We also used part class as a tool to pull certain information into CPQ.

Like the posters above I believe the BAQ Sync is the way to go. Pretty easy to setup the BAQ, then run the BAQ Sync. Maybe schedule to run overnight if your parts don’t change too much and maybe run it one off if you know something important needs to be updated ASAP. We are all cloud based, the sync seems to run very fast for the 150 parts we have in our demo system. I imagine there may be a few minutes delay but it should be pretty fast.
If you need specifics on BAQ I’m sure someone can help or help setting up the BAQ Sync schedule.

Thanks, Doug! Sync’ing it nightly would be just fine… Weight shouldn’t change, and FIFO cost may vary a bit, based on receiving the latest lot into inventory.

I tried to find application help on the CPQ BAQ Sync process, but struck out. It looks like it was as simple as creating a BAQ, selecting that for the sync, and clicking process. Then a table was created in the KBMax database called x.Kinetic.BAQ_BAQNAME.

What’s the snap logic to get at the sync’d tables?

I ran the sync process, and it finished in the same minute, per the system monitor. I found the table with SSRS in the KBMax database, named x.Kinetic.BAQ_CPQ-TRUSSTEST, but it only pulled 10k records, so I added RemoveTestRowLimit in the execution settions of the BAQ. It still only pulled 10k records (and the BAQ in Epicor only pulls 10k records, weird…) I’ll get that figured out.

@Espa - Great idea to use part class to reduce the sync. Thanks!

Edit: Found BAQ Sync instructions in the Kinetic CPQ Integration Guide:

Synchronizing BAQs (Optional)
The CPQ Integration also supports synchronizing of arbitrary data from a BAQ. You can then use
these data within the CPQ snap rules. For example, you could take price lists from Kinetic and use
these in CPQ to calculate the configured price.
You can select multiple BAQ(s) and run them within the same process task. The app allows you to
run multiple tasks concurrently, however you cannot run separate tasks with the same BAQ.

  • Used to sync arbitrary data to CPQ.
  • You can select and execute multiple BAQs.
  • BAQ doesn’t have any required parameters.
  • Table is created in CPQ SQL Database prefixed with ‘Kinetic.BAQ_’ in the ‘X’ schema.
    • Run this process before you design your configurator.
    • The BAQ must not have any required parameters.
  1. Open the CPQ Quote Attachment Synchronization process. You can find it on the Sales
    Management > Configurator Management > General Operations > CPQ BAQ Sync menu.
  2. On the Options card, in the No BAQ Selected field, search for and select a BAQ you want to
  3. Select Process.
    Use the System Monitor to verify whether the process has completed
    As soon as the app synchronizes the BAQ, it dumps all the data into a table
    within the CPQ database in the “X” schema and prefixed with “Kinetic.BAQ_”.
    For example, “.[Kinetic.BAQ_Colors]”.
  4. Exit the CPQ Quote Attachment Synchronization process
1 Like

I got the BAQ issue resolved (server setting). The sync still took 1 minute (or less) according to the system monitor.

Now trying to figure out the snap logic to access the sync’d PartCost records. It output a price when I had static values set, but I’m not sure on the steps to join it to the BAQ table.

Sure would be nice if there was documentation, Epicor!


Sorry for the late reply, and I hope the other posters have helped you (there are some great replies).

Our BAQ itself is very simple; it pulls data from the part table, and only these columns:

  • Part
  • Description
  • Unit Price (because we were using it to show pricing on certain areas of the UI)
  • UOM
  • Weight UOM
  • Unit Net Weight

Right now because we’re still in development, I sync only when I know I’ve made a change to weight or price to parts likely found within a configurator. I may make that a daily partial sync if I feel that other departments could make changes to these fields without notifying me first.

We use a Safe Function to query that BAQ and return the weight and price to an area on the UI.

Yes, we are bringing back pricing using Price Lists. The configurator can help as well as you configure your product and changes being made, be it by weight ro size, the adders will update the base price from the price list. That’s how I’m doing it today with CPQ.
It should also be noted that I’ve switched CPQ over to ECC. That gives more flexibility with data integration and performance.

What do you mean by this?

@kwolkens - Thank you. I think I’ve got the BAQ and BAQ Sync set up properly - The part cost and net weight show up in the CPQ table. I’m stuck at trying to figure out how to incorporate that in CPQ (so it’ll show up in the Pricing Rules).

@ToryD - That would be a HUGE help!

If I hard-code the price, per the Epicor Learning Center course CPQ Foundations: Manipulating the Price Object with Snap, it’ll show pricing. I just can’t find how to snap-code the fields we sync’d over to CPQ from Epicor.

Then I linked the BAQ sync’d table in Pricing Options, but now it errors, even with the pricing still hard coded in the snap rule:

Here’s my snap:

Somehow I need to tell CPQ to use cost from materials specified in the Manufacturing rule.

I’m writing up a list of questions for our CPQ Project Manager and setting up a meeting with the Professional Services gurus to get assistance as well.

Thanks for the help everyone!

I’ll see if I can split this off to it’s own thread as well.

1 Like

There are basically two ways to attach CPQ to Epicor. The way I chose was to use Epicor Commerce Connect (ECC). I don’t have to use BAQ’s and I can sync my Epicor configurator to CPQ’s configurator. This also makes Automation Studio more valuable as I can create recipes to determine things like approvals, quote versus sales order, price matching with MSRP compared to customer price list, and the list goes on. The best part is that I don’t have to poll the data. The data is received in Epicor instantly and will alert a scheduler, manager, or customer service rep to act on the order or quote.

I will say that ECC of Epicor 9 and 10 is not the same as ECC with Kinetic (Epicor 11). For those of us who remember old ECC, we have nightmares of Type Scripts going haywire and bugs bighting us in the rear. Today’s ECC is much simpler and easier to use.


Interesting to hear @Jonathan_Lang . Thanks for the updates. It has been several years since we were doing an analysis on ECC to try and host some sort of configurator.

I thought I should share something I just learned about CPQ and BAQ sync. We are in the implementation phase as well. We have a lot of select/drop down fields that are powered by tables. Those tables are created and maintained via a BAQ sync. CPQ functionality defaults to the first item on the list. We want the user to make a selection. So, the initial status needs to be blank.
The CPQ consultants say to add a blank line to the beginning of our table. That is fine for manually created tables. But for a table that is updated daily via a BAQ sync it is not tenable. However, if in your BAQ you add a union all subquery with no table, you can add that line. (Thanks Tim Shoemaker.)
The bad news is that I just found out that there is a bug, where CPQ cannot sync a BAQ with a union because it sees the matching union columns as duplicates. Epicor support tells me there is a workaround to just rename my columns. That does not work for a union.
So once again we find that CPQ with Kinetic is just not ready for prime time. There seem to be CPQ guys and Kinetic guys and nobody at Epicor understands or has responsibility for the interface between the two.


Thanks for taking the time to add so much detail about the shortcomings.

How are the tables created in Epicor? Could you use a placeholder character instead of a blank in the Epicor data, so it sorts first? Maybe a - or a ~?

Or could a pricing or mfg rule have logic to force a default null or " " selection if the user doesn’t select it?

Time to start adding CPQ items to IDEAS when support claims ‘Working As Designed’.