# Schedule BPM Help - Reference Post Inside

**URL:** <https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019>\
**Category:** Epicor ERP 10\
**Tags:** e10\
**Created:** [January 29, 2021, 8:27pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019 "2021-01-29T20:27:58Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [January 29, 2021, 8:27pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/1 "2021-01-29T20:27:58Z")

</div>

Reading this post, it looks like you can schedule a BPM to run.

> [@Using a Task Agent Schedule to run a BPM on a schedule](https://www.epiusers.help/t/using-a-task-agent-schedule-to-run-a-bpm-on-a-schedule/64944):
>
> The topic came up elsewhere so I thought I’d make a general post for those who want to see how it works. My apologies if this is already a topic elsewhere - I did not see a similar post in my cursory search. Premise - how to run a BPM (usually a chunk of custom code) on a schedule with no add-ons to the basic system such as the User Process Scheduler add on. Solution - using the Task Agent schedules, you can create a schedule that has no tasks, but can trigger a BPM that is itself selective in…

I’m stuck. I have a SysAgentSched.Update / In-Transaction BPM built as shown in their post.  
The post above stops at “Executing Custom Code”. So I either need help writing custom code to uncheck a UD field in the VendPart table or add something else so my other BPM it will fire.

Ideally, UD Field box gets checked when new record is created in Supplier Part List when Effective Date is not todays date. (Done with another BPM already)  
Scheduled BPM checks all Supplier Part Records where Effective Date = Today and the checkbox is true.

Then it can simply uncheck the box and an existing working BPM will fire.

DMT on a schedule is my next move to fire by other BPM if I cannot solve it in the system.

---

<div class="post-metadata">

**Author:** ![DaveOlender](https://www.epiusers.help/user_avatar/www.epiusers.help/daveolender/32/260_2.png) [@DaveOlender](https://www.epiusers.help/u/DaveOlender)\
**Post date:** [January 29, 2021, 8:56pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/2 "2021-01-29T20:56:42Z")

</div>

You can schedule a function to run a BPM.

I just did this for a customer on Wednesday and it works slick (easier than trying to attach to the system agent/monitor).

I was working on a 10.2.700 - so not sure if this is avail in 10.2.600. Search menu for schedule function. If you have it - you can figure it out in about an hour.

DaveO

---

<div class="post-metadata">

**Author:** ![MikeGross](https://www.epiusers.help/user_avatar/www.epiusers.help/mikegross/32/14500_2.png) [@MikeGross](https://www.epiusers.help/u/MikeGross)\
**Post date:** [January 29, 2021, 9:02pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/3 "2021-01-29T21:02:01Z")

</div>

@kylepbsps - I’m glad my previous post could help. @DaveOlender is right - the newer versions that allow you schedule a function provide an alternate route - although I’d argue that using the schedule to trigger something is the same no matter how you do it 🙂

As for you’re issue - I’d write the BPM so it work’s directly when you interact with the record - in order to test the code without having to trigger something that runs in the background that you cannot see. Get the code working in the UI as a BPM, and then move that code to the scheduled BPM or Function.

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [January 29, 2021, 9:18pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/4 "2021-01-29T21:18:01Z")

</div>

I guess the issue i’m having is that someone will enter the new record but the values shouldn’t take effect until a later date. I don’t want my BPM to run until the day its effective. By storing a checkbox value, I can hopefully clear that value when the date arrives, and by clearing the value will trigger the 2nd BPM.

Checking once a day was the best I could come up with for scheduling. I’ll check out 10.2.7 and see if that “schedule function” exists in my license.

---

<div class="post-metadata">

**Author:** ![MikeGross](https://www.epiusers.help/user_avatar/www.epiusers.help/mikegross/32/14500_2.png) [@MikeGross](https://www.epiusers.help/u/MikeGross)\
**Post date:** [January 29, 2021, 9:26pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/5 "2021-01-29T21:26:20Z")

</div>

yes, writing code that the end-users will inevitably hose up is the most annoying aspect of all of this.

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [January 29, 2021, 9:31pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/6 "2021-01-29T21:31:32Z")

</div>

I meant clearing the value automatically if the date matches todays date, therefore triggering another bpm. Can’t rely on the users haha. That was my purpose for the box and its not shown on the form.

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [January 29, 2021, 9:37pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/7 "2021-01-29T21:37:07Z")

</div>

Alright! New toys! It does exist in 10.2.600.10 also

![image](https://www.epiusers.help/uploads/default/original/3X/c/b/cbfd20de924ec555f8eadec03fdcd5a988684dfd.png)

---

<div class="post-metadata">

**Author:** ![DaveOlender](https://www.epiusers.help/user_avatar/www.epiusers.help/daveolender/32/260_2.png) [@DaveOlender](https://www.epiusers.help/u/DaveOlender)\
**Post date:** [January 29, 2021, 9:45pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/8 "2021-01-29T21:45:26Z")

</div>

You have to start by allowing yourself permissions: Bring over the 3 Function Security Groups (Ok I brought over all 3 - you will want to research the abilities and limitations of each group and select just the appropriate security group - of coarse 🙂

![image](https://www.epiusers.help/uploads/default/original/3X/a/9/a90e2976a0f9a39b54e16fb4d256e75b2f7eb2a5.png)

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [February 2, 2021, 8:03pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/9 "2021-02-02T20:03:18Z")

</div>

I can get this to launch on a schedule from the first post I referenced. I still cannot figure out how to update a UD field in the VendPart\_UD.xxx only in the temptable which isnt useful.

I’m trying to clear a UD boolean field that meets certain criteria and run it daily.

I can get the test email sent at the bottom just fine.

Any Ideas?

 ![image](https://www.epiusers.help/uploads/default/original/3X/8/1/81977a1eae30854dacb67feaff4753fa3e7f764b.png)  
 ![image](https://www.epiusers.help/uploads/default/original/3X/a/e/aeaa10dd034ab9cad65d4c896f8c4648d363a9b1.png)  
 ![image](https://www.epiusers.help/uploads/default/original/3X/3/e/3ed00047901db63b6ed30f19c88f60081bed2c9d.png)  
 ![image](https://www.epiusers.help/uploads/default/original/3X/a/d/ad81f66c5bc5ad0908af365787cfdc000ed04a03.png)

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [February 2, 2021, 8:25pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/10 "2021-02-02T20:25:10Z")

</div>

I’m thinking Supplier Price List which access’s VendPart table rely’s on information from Part first. I’ll try to query part, then VendPart, or store my custom field in the Part Table, so I can retrieve it easier.

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [February 2, 2021, 8:45pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/11 "2021-02-02T20:45:16Z")

</div>

Simply would be  
Query VendPart table where MyCustomUDField = True AND EffectiveDate = Today  
Change field to False  
Done

Trying to do this on a schedule to fire another BPM

---

<div class="post-metadata">

**Author:** ![cfinley](https://www.epiusers.help/letter_avatar_proxy/v4/letter/c/3e96dc/32.png) [@cfinley](https://www.epiusers.help/u/cfinley)\
**Post date:** [February 2, 2021, 9:03pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/12 "2021-02-02T21:03:11Z")

</div>

I recently scheduled a BPM using a Updateable BAQ and “exporting” it. I found this solution on another thread from people much smarter than I. The reason I gravitated towards this solution was to avoid a BPM being fired unnecessarily every time a task is run.

> [@A process or task that can be scheduled AND initiate a BPM](https://www.epiusers.help/t/a-process-or-task-that-can-be-scheduled-and-initiate-a-bpm/39737/14):
>
> No, the UBAQ itself has BPMs built in GetList , Update etc… Put your code in your Ubaq’s getList method.

1. Create BAQ
2. Add tables and configure the results to show the records you want modified.
3. Click Updatable Checkbox on General tab.  
 ![image](https://www.epiusers.help/uploads/default/original/3X/7/e/7e36da7aac15b05030bb6812168ef50201902615.png)
4. Go to Update \> Update Processing. Check the Advanced BPM Update only and click the BPM Directives Configuration Button  
 ![image](https://www.epiusers.help/uploads/default/original/3X/e/c/ec96efacd02491ded676714c27d524144853ac4e.png)
5. Click the GetList Method, then create your BPM. This will get fired when you schedule your BAQ to be exported  
 ![image](https://www.epiusers.help/uploads/default/original/3X/1/b/1bf079f33f7aadb1e6a6ef9f6f6fc8f1ae2766e4.png)
6. Test your BAQ with hitting the GetList button inside of the BAQ screen  
 ![image](https://www.epiusers.help/uploads/default/original/3X/0/a/0add131ed677a88f34862552be15a75981ada6ad.png)  
7.Your BAQ/BPM is working as expected, lets schedule it. Go to System Setup \> System Maintenance \> System Agent. New \> New Schedule.  
 ![image](https://www.epiusers.help/uploads/default/original/3X/0/f/0fc47be8bd6c3aca5d0a1a89f07471e6376ab467.png)
7. Once you have defined how often you would like this to run, lets queue it up. System Management \> Business Activity Queries \> BAQ Export Process  
 ![image](https://www.epiusers.help/uploads/default/original/3X/c/a/ca23391af6b6108cc905528af2cadfaeae9d9a94.png)
8. Enter in your BAQID. Select Output Format CSV. Change the schedule dropdown to the one you create. CHECK RECURRING so it fires more than once on this schedule/frequency
9. Check your AppServer for the file export to verify the records that were affected.

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [February 4, 2021, 8:50pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/13 "2021-02-04T20:50:57Z")

</div>

I got it all done. Thanks everyone.

After I document my side I might do a writeup since I had such a hard time figuring it out.

Schedule UBAQ with BPM inside was the solution.

---

<div class="post-metadata">

**Author:** ![MikeGross](https://www.epiusers.help/user_avatar/www.epiusers.help/mikegross/32/14500_2.png) [@MikeGross](https://www.epiusers.help/u/MikeGross)\
**Post date:** [February 4, 2021, 9:09pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/14 "2021-02-04T21:09:52Z")

</div>

> [@kylepbsps](#):
>
> I might do a writeup

Please do, the community here will surely appreciate it!!

---

<div class="post-metadata">

**Author:** ![kylepbsps](https://www.epiusers.help/user_avatar/www.epiusers.help/kylepbsps/32/30579_2.png) [@kylepbsps](https://www.epiusers.help/u/kylepbsps)\
**Post date:** [February 5, 2021, 5:49pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/15 "2021-02-05T17:49:05Z")

</div>

Working on it now =)

> [@Guide - Calculate Sales Unit Price from SPL with BPM's](https://www.epiusers.help/t/guide-calculate-sales-unit-price-from-spl-with-bpms/75292/2):
>
> UBAQ and Scheduling Price changes on Future Effective Dates We need to schedule future SPL effective dates to calculate our Sales Prices but not until that day arrives. Recently I learned you can create a UBAQ and inside of that create a BPM to set your fields. You can also schedule the UBAQ from another BPM in the SysAgent table. The way I chose to do it is to use BAQ Export Process, which will run the BAQ and export me a “Log” of what parts were updated. –UBAQ [image] GetList - Post Pr…

---

<div class="post-metadata">

**Author:** ![TerryR](https://www.epiusers.help/letter_avatar_proxy/v4/letter/t/ed655f/32.png) [@TerryR](https://www.epiusers.help/u/TerryR)\
**Post date:** [August 18, 2022, 4:15pm UTC](https://www.epiusers.help/t/schedule-bpm-help-reference-post-inside/75019/16 "2022-08-18T16:15:26Z")

</div>

For others, I did it with UserCodeType instead of a UBAQ:

> [@Triggering a BPM via schedule with UserCodeTypes](https://www.epiusers.help/t/triggering-a-bpm-via-schedule-with-usercodetypes/93528):
>
> We had a consultant use UserCodeTypes to trigger BPMs to run. You cant schedule a BPM, but you can now schedule a function. While you can code pretty much anything you want into a function, it can be harder to troubleshoot than a BPM. So you can have the Function trigger a BPM by updating the UserCodeType table. Edit - This is pretty dumb now though, best just to copy-paste the BPM into the function once it is working.
