We are a SAP shop (ERP System). SAP generates events (PO Created, Req Released, etc). We want to send these events to a Savvion process that will determine if any Savvion instances care and if so look up the session id and call that instances web service. Our primary issue is SAP does not know Savvion's instances process ids.
The SAP Process:
Event fires and is caught
Savvion Session Started
Call to Savvion Web Service to start new instance of Savvion process for handling events from SAP (object name and key will be passed)
Savvion Session Ended
Savvion Process for handling events from SAP
Check Savvion tables for instances that use the SAP event - need process id which SAP does not have.
Call Savvion web service for correct instance using process id
My questions (we are new to Savvion)
1. Documentation has us quite confused - My understanding is I need the SAP web service call to start a new instance. Do I create the process in BPM studio using forms and convert in Portal to webservices? The start step form will generate a WSDL for us to import into SAP? We do not have a web service repository yet. This can be done Savvion resources came in and did a proof of concept (not on our system so we do not have the process template) but unfortunately they did not explain how.
2. This approach is more acceptable to us because if we decide to turn on a shawdow process to track purchase orders in SAP - all the work is in Savvion except for configuring SAP to send relavent events to Savvion. Savvion can look up it's own process id based on the purchase order number. In order for SAP to track the process id we would need user exits and enhancements in many programs. Open to suggestions.
Illustration - Let's say were are tracking Requisitions through 3 statuses - created, released and order created.
SAP calls Savvion Process for handling events from SAP with event Requisition-Created Key 1234
- Savvion Process finds no instances that for Requisition 1234 but determines this event needs to call web service to start instance of Requisition Tracking Process in Savvion. Service is called and instance is started.
SAP call Savvion Process for handling events from SAP with event Requisition-Released Key 1234
- Savvion Process finds an instance for Requisition 1234 and calls that instance web service. Requisition Tracking Process instance for 1234 advances to next step.
SAP call Savvion Process for handling events from SAP with event Order-Created Key 7001
- - Savvion Process finds no instances that for Order 7001 but has logic to also check for Requistions. Savvion finds Requisition 1234 was used to create Order 7001 (call back to SAP service). Savvion Process finds an instance for Requisition 1234 and calls that instance web service. Requisition Tracking Process instance for 1234 advances to next step.
Hope this is clear - thanks for any help, guidance and support. Our hope is (if we can get this working) Savvion will quickly start tracking our SAP processes using SAP events.
Which version of SBM do you have? We use SBM 7.0 SP2 and have BizLogic (Process Template) published as a web service. Any BizLogic process template can be "published" as a WS through BPM Portal (Administration > Applications > BizLogic). This WS is called by an external system to instantiate a new process instance. The WS response contains process instance id of the new instance. The external system (SAP in your case) can persist this id and use it when needed.
We are currently using SBM 7.5.1Build 364
I know we could store the process ids in SAP in a customer table and have custom code for every event. I was hoping to save a ton of money if I could pass all the events to the same process and let that process figure out what web services to call and what the Savvion process id is.
I am a little confused on how to start a process by calling its web service. I got instructions on how to convert a process to web services but can not find how that process should be set up. Is it as simple as setting the process up with forms on the start and other tasks and converting? Who is the performer of the task.