CadLink and BPM's

Does anyone have any experience with Cad Link? Specifically with creating BPM’s to control things like part class and part group? We have programmatic rules based on part number during creation, and I’m wondering if a BPM will work to create them instead of customizing CAD link.

We have used CADLink in the past, customized pretty heavily. We never used BPMs in combination with it, but I think what you’re asking about is possible. A BPM on the Part.Update method could set the Part Class / Group based on the part number.

The only downside I see is that you wouldn’t get any visual feedback in the UI until after the save operation had taken place. If it were done at the CADLink customization level, the part class could be visible to the user before save. If that isn’t important, I think a BPM would do the job.

Alright, that’s good to know. I’m working on testing out one right now. I don’t have a great feeling about what we are going to get with the customization from CADLink. They don’t seem to ask a lot of questions so I’m not sure if they understand exactly what we are looking for, and as always with programming, there are a lot of ways you could do things, and there doesn’t seem to be any discussion coming from them that lays out any options and the pro’s and con’s to each choice. (if you haven’t noticed, I like to talk things through quite a bit to understand my options and pick the best one)

Who knows maybe they will impress me with what they end up with?

We’re are coming from a Service connect setup, so no feedback when a part is created isn’t a real problem now. We use smart(ish) part numbers, so most of what is necessary to set can be determined by the part number. They pick the part number based on the part group and class and purchased or manufactured, so back figuring it really shouldn’t be a problem. One thing I like about the BPM method is we can control it/change it internally without having to pay for more customization from an outside source.

BPM’s work just fine. I did a quick test to set the class based on the part number, and you have to save the part, which creates it in E-10, then refresh, and it will show you that CAD and E-10 don’t match, and you can save again, and it will update CAD to match and you are then good to go. I can then change them from CADLink if I want, since I set up the BPM to only fire on row-add. A little bit of messing around, but you can pretty much ignore those fields because they are being handled automatically.

Now what else can I use ya for?

Nice, glad the BPM will work for you. We discovered that customizing CADLink was not going to be sustainable for us. We ended up creating our own tool. It’s nice to be able to add features on demand.

Out of curiosity, what do you use for CAD?

We use Solidworks, with EPDM, although our CadLink is not looking at EPDM. We are just at the beginning stages of implementing the system. What we really needed was a way to go two ways with the information and be sure that what we have in E-10 matches what’s in the model. We engineer to order so almost every job is a new part number (at the top level anyways) so we are constantly creating part numbers and methods, and last minute changes really kill us when trying to use a service connect flow that only works one way.

What did you guys do for your own solution? Did you make something like CadLink? or totally different?

1 Like

Hi Andrew … I’m curious about the tool you created. What did you use? I agree, it would be nice to add features on demand.

Thanks in advance,
Karen Pavlik

Sounds very familiar! We also engineer and build to order.

We have tools embedded in SolidWorks for editing part info and generating part numbers on the fly. Our CADLink replacement is also embedded in SolidWorks, but also has a standalone application to import Excel BOMs for anything that isn’t modeled in SolidWorks. It is similar to CADLink in some ways, but is faster and the user-interface is better (in our opinion).

The tools are written in C# using Visual Studio.

Example Screenshot:


That’s pretty impressive. I wish we had the resources to do something like that in house. I think CadLink will be huge improvement for us going forward though.

Andrew … Thank you so much. You really have me thinking.

So now I have an interesting problem. For some reason, after I import with CadLink, my BPM for setting the scrap rates will not work. (this is while in E-10 putting operations on the parts). The ttECOMtl row doesn’t return any row for some reason when I make a change in the EcoMtl (I’m changing the related operation) it looks like everything is saving fine, so it has to have something, but for some reason it’s not returning a row to set the EstScrap. If I delete the material and re-add it, it works just fine.

Anyone have any idea why that would be?

It looks like it was a fluke. I closed and re-opened epicor, and now it’s working fine.

Hi Guys,

I dont suppose you have any learning / reference material for CADLink? Anything would be appreciated!


Hi Kam,

There isn’t much that they give you for documentation. The basic use is pretty simple and a quick demo by them would show you pretty much everything you needed. The hard part is within a few minutes you will probably see some stuff that needs to be customized depending on how you have your system set up. (hence the reason there isn’t a lot of documentation, each business is a little different) We use a combination of BPMs and CadLink customizations to make it work for us. Since CadLink will respect BPMs made in the system, I did as much of it with BPMs as I could so I didn’t have to pay them for as much customization and so I could control it for any changes later. The downside is there is a lag in the process where you have to save once to get the info into Epicor, which will be massaged by the BPM’s and then save it again to make the BPM changes flow into SolidWorks. But it’s cheaper/faster than trying to get the customization through CadLink and better than no automation at all. However if you want, CadLink will customize as much as you want, just be prepared to work through the bugs of what is essentially custom software.

I hope that helps. If you have any more specific questions, I’ll be happy to answer to the best of my ability. If you want a demo, just call CadLink and set up a remote sessions, they do a pretty good job.


Thats exactly what I needed to know @Banderson. Thanks alot sir!

@Banderson, do you have any suggestions for how one would distinguish BO method calls coming from CADLink vs the Epicor client, inside a BPM? I need to make some BPMs behave a bit differently if CADLink is creating a Part vs if an Epicor user is creating a Part.

I’m not 100% sure, but there are some callContextClient properties in the BPM that you might be able to filter some things on. I don’t have access to CADLink now to test any of this right now. Check out some of those and see if there is something that you can filter on.

The other workaround is to use different user accounts for cadLink and filter on that.


Thank you. I forgot about the ClientType callContext; that might be what I’m looking for.

1 Like

@Banderson, I added some UDFields to Part Maintenance. I want to use CADLink to update them. BPMs wont work for this will they? Because I don’t have any means to “grab” the CADLink input values. Is my thinking right? To update these UDFields, I’d have to have a customization on the CADLink side, correct?

That’s correct, they need to map them. It’s been a couple of years since I’ve been into the system (I’ve changed jobs) but the cadlink team was really good to work with on getting that done.