Bpm

I am new to bpms so would like some guidance on the navigation. I am needing to link a ud field from the quoteentry form to the orderentry form. I have added a ud field in both tables. I have been directed to update current bpms to achieve the result of having the added ud field in the order entry form update if the added quote entry ud field is updated ect. Question being how do I view and modify current bpms associated with each form and what would be the best solution for the desired result. Thanks.

What tables are the fields on(QuoteHed, QuoteDtl, …)?
You mention ‘update current BPMs’. Are there already BPMs in place that execute logic(possibly map other fields).

If you need to create BPMs to map over these fields, you have some options and considerations.

  • Data Directives fire when a table changes. You can add a data directive to any of the relevant tables and trigger logic based on the table changing. For example, you could create a data directive that detects when the UD field changes and maps the field to the other table(s). You want to use a standard data directive for this(fires after the field changes) as opposed to an in-transaction which can affect the data which is changing. This may or may not be the right option for you, depending on the requirements.

  • Method Directives fire when a business object method fires. You can create a directive that fires before the method executes or one that fires after it executes(you can also create one that overrides the base logic but these are rarely a sustainable solution). In this case your logic will fire only in certain cases. This may be the right solution because you can be more precise in the situation(s) your logic fires.
    If you end up using method directives, you may need to create more than one. For example, creating a order from a quote in Quote Entry uses different business object methods than creating a order from a quote in Order Entry. If you need to handle both of these cases, you will need to duplicate the logic in both places. Method Directives can have more context to use(parameters can include information that will not be available at the data directive level.

What version of Epicor? If functions are available you can define a function and call it from multiple directives to avoid duplicating code.

Although not applicable in this case, it’s worth mentioning the built in UD field mapping. There are a set of predefined table mappings in Epicor called Extended Field Maps. You can’t define mappings but if the mapping you need exists(for example the mapping ECOMtl to PartMtl exists) you can use the mapping to connect UDF fields on the tables. If you used the example mapping above to connect a UD field on ECOMtl to PartMtl, any time the Epicor core logic uses creates or modifies one table from the other, your mappings kick in. In the example above, it would kick in when you check out, check in, undo check out, … So you don’t need to worry about all the cases yourself.

Below is a layout of the tables/fields. Basically I am needing to have as the UD fields listed(six of them) carried over to the sales order form.

Also, Epicor10 is the version.

There are two Method Directives that are used. One on the Quote BO, for when a quote is “pushed” to an order (in Quote Entry). And the other in the SalesOrder BO, for when you “pull” a quote into an order (in Order Entry). You need to create BPM’s for each. That way it will work regardless if its done in Quote Entry or Order Entry.

Can you go into more detail when you say I need to create a BPM for each?

  1. Create a BPM on the Quote BO (for when you want to use Quote Entry > Actions> Create Order).
  2. Create a BPM on the SalesOrder BO (for when you want to use Order Entry > Actions> Pull Quote).

If you create just #1 or #2, it’ll work for that specific scenario.

For creating BPM’s, turn on trace logging (lots discussed here about that), do your process, and view the trace. You’ll see the specific business objects used (which you will create the BPM for…)

Hope this helps!