How to run a BPEL process once every morning?
Hi All!
I am working on a BPEL process which will send email greetings to one/group depending on the day it is, like birthday/national festivals etc. I want this process to run by itself every morning once,and do the work.
But I don't know how to make the process run once every morning? Please let me know how to schedule a BPEL process to run every 24 hours.
Thanking in advance.
Regards,
Deepika.
Some other links on scheduling and bpel :
http://technology.amis.nl/blog/?p=1372
http://clemensblog.blogspot.com/2006/04/bpel-scheduling-reoccuring-processes.html
Running BPEL service as a scheduled process...
Similar Messages
-
How to run a BPEL process in jdeveloper tool instead of BPEL process manage
is there a way to run the bPEL process in jdeveloper itself ?
Not really, Oracle introduced test seuite in 10.1.3.3 which allows you to test without calling the endpoints. Probably not really what you are after but may be helpful down the track.
http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/testsuite.htm
cheers
James -
Can I find how many instances of BPEL process is in running state ?
Hi,
How can I find how many instances of BPEL process is in running state ? Any code/API ? help ? ThanksCheck the class com.oracle.bpel.client.Locator...
u can use the method listInstances(WhereCondition wc) to get the required details
Regards
Albin I -
How to call a bpel process in another
can anyone tell me how to call a bpel process in another bpel process?
thanks in advance.Hi-
this might help
Re: Call a BPEL process from another BPEL process
Let us know if you need any more info.. -
How to Call Custom BPEL Process using JSP
Hi All,
I m not able to find out the way " How to deploy Custom BPEL process using JSP." Suppose I m Designing my custom BPEL process , and I want to call process through JSP.
In order to call the BPEL process using JSP I may get the Reference from Oracle guide, But it is for Existing Example like Hello world, Order Booking.
But I am facing the problem in order to call the Custom BPEL process.
In case of Oracle Example it looks Simple but How to call Custom BPEL process using JSP.
Please help me.
Thanks&Regards
Devesh Mishrahi
The BPEL Developer guide give the way to Locate the service.can you please specify where you are getting the problem.
Thanks,
Sivakumar -
How to find out BPEL process server is up and running?
Hi All,
We are invoking a synchronous BPEL process from our application.
Incase of any network failures, we want to switch to other flow.
Is there any way to find out the BPEL process server is up and running?
Thanks,
Uma.Try accessing the dynamic wsdl (http://server.com:7777/orabpel/default/service/1.0/service?wsdl)
from your application. If there's no error opening this page using http get, the server is alive :)
Marc -
How can I invoke BPEL process to run ?
Hi,
after deploying the bpel process, which way I can invoke it without BPEl console ?
Can I invoke it from inside of my stored procedure
or creating (and invoking then) concurrent-process in OEBS ?Clemen,
Thanks for the response.
Assuming that I created right xml(+ namespaces) in the stored procedure, put it into varchar2 parameter, and invoked BPEL WS. My question is how I can parse it?
Advise please. I'm a rookie on the XML.
I also tried to pass delimited string from plsql and then parse it using orcl:create-nodeset-from-delimited-string. Unfortunately I didn't figure out what I have to put as a QName parameter of that function. The documentation is insufficient. There is no any sample with that function. Another guy is also was struggling with it: create-nodeset-from-delimited-string
Maybe you can clarify it?
Thank you in advance.
Sergey. -
How to install Oracle BPEL Process Manager with the BEA WebLogic
Hi ,
I will install Oracle BPEL Process Manager with BEA WebLogic 9.2(MP2). I have download orabpel_10133_WebLogic.zip ,then Modify the following mandatory installation properties in the orabpel_10133_WebLogic\bpelDomain.properties file:
# BEA_HOME is the path where Weblogic is Installed
BEA_HOME=/opt/bea
# JAVA_HOME is the path of jdk folder inside your weblogic
JAVA_HOME=/opt/bea/jrockit90_150_10
# DOMAIN_HOME is the path where you wish to create your domain called BPELDomain
DOMAIN_HOME=/opt/bea/user_projects/domains
# APPS_HOME is the path where you wish to copy your applications and adapters that are required for oracleBPELServer
APPS_HOME=/opt/bea/user_projects/apps
# BEA_HOME is the path where BPEL PM is Installed
BPEL_HOME=/home/oracle/bpel/product/10.1.3.1/OraBPEL_1/bpel
# DRIVER_TYPE is the datasource class that installable use to create a datasources for oracleBPELServer
DRIVER_TYPE=oracle.jdbc.xa.client.OracleXADataSource
# DB_URL is the url to connect to orabpel schema
DB_URL=jdbc:oracle:thin:@16.157.134.17:1521:orcl
# DB_USER is the user Id for orabpel shema in database
DB_USER=ORABPEL
#DB_PASSWORD is the password for orabpel schema in database
DB_PASSWORD=bpel
#BPEL_SERVER_NAME is the server i.e. to be created under BPELDomain
BPEL_SERVER_NAME=oracleBPELServer
#PROXY_HOST is the Host name of the proxy server
PROXY_HOST=www-proxy.us.oracle.com
#PROXY_HOST=
#PROXY_PORT is the Port where the proxy server is running
PROXY_PORT=80
#PROXY_PORT=
#NON_PROXY_HOST is the list of non proxy hosts that are divided by a | symbol
#NON_PROXY_HOST=*.oracle.com|*.oraclecorp.com|localhost|127.0.0.1|stbbn10|stbbn10.us.oracle.com
NON_PROXY_HOST=*.oracle.com|*.oraclecorp.com|localhost|127.0.0.1|stbbn10|stbbn10.us.oracle.com|16.157.134.135
When I run the setup.sh , it will report
BUILD FAILED
/opt/software/WL_Installables/build.xml:131: Traceback (innermost last):
File "./wl_scripts/bpelDomain.py", line 22, in ?
File "./wl_scripts/createGroupsAndUsers.py", line 4, in ?
weblogic.management.utils.AlreadyExistsException: [Security:090267]Group BpelGroup
Actully ,there is no BpelGroup in Weblogic. Does anybody know how to solve it ?MAke sure you have not set ANY environment variable related to Oracle / BEA / Java / LD_library path. Use the following script to unset / set the initial settings:
#!/bin/sh
unset ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
unset LD_LIBRARY_PATH LD_LIBRARY_PATH_64
unset CLASSPATH JAVA_HOME
export PATH=.:/usr/sbin:/usr/bin:/usr/local/bin:/opt/VRTS/bin
export BEA_HOME=/appl/oracle/products/9.2/weblogic
Marc
http://orasoa.blogspot.com -
I'm a new user in the jdeveloper community :)
i want to debug a bpel process ,for example the "AmazonFlow" sample project.
but it asking for a "default run target" path, what kind of a file it expect? i guess it's a kind of a file that consume input for the bpel process? is it always expect a default run target?
thanksuser573208;
It is not possible to use the normal Debug menus in JDeveloper, you have to do what Mark says, deploy the process to a BPEL (or SOA Suite) server, and do a test run of the process. You will find plenty of documentation on how to set up the server, and initiate a process.
When the server is up and running, the process is deployed, and a test instance has been started, debugging is actually very easy. In a development environment, you will use the server's BPEL Console to debug the process, instead of sensors (much easier). The default logging options give you full access to your data at any point of the process, it's out of the box and easily understood.
Generally, the visual Flow view gives you the best overview, and you have full access to the content of variables, the request and response data of web service calls, fault details, etc. (at any point in the process) by clicking the different elements (icons) of the process flow.
The other tabs (Audit, Debug) work the same way, but in a less visual manner.
-Rune -
How to run the cursor loop once even if it is true for many times - urgent
Hi,
Say
loop
tdate='12-JAN-2005'
loop
cursor.......
if '10-JAN-2005'<=tdate then
fetch
end loop
tdate=tdate+1 month
end loop;
in the above query i want my cursor to run the loop only once at the first true of my condition....in the second run the tdate will be = '12-FEB-2005'....but my cursor loop should not go in..it has to comeout....
how to do this....plz help very urgentin the above query i want my cursor to run the loop only once at the first true of
my condition....in the second run the tdate will be = '12-FEB-2005'....but my
cursor loop should not go in..it has to comeout....Simply control has been the cursor processed or not.
Something like that
SQL> declare
2 tdate date := to_date('12-JAN-2005','DD-MON-YYYY');
3 cursor cr is select * from dual;
4 rt dual%rowtype;
5 cursor_has_been_processed boolean := false;
6 begin
7 loop
8 if to_date('10-JAN-2005','DD-MON-YYYY') <=tdate then
9 if not cursor_has_been_processed then
10 open cr;
11 loop
12 fetch cr into rt;
13 exit when cr%notfound;
14 end loop;
15 close cr;
16 cursor_has_been_processed := true;
17 dbms_output.put_line('Cursor has been processed');
18 end if;
19 --DO something
20 null;
21 end if;
22 dbms_output.put_line(tdate);
23 tdate := add_months(tdate,1);
24 exit when tdate >= to_date('12-MAY-2005','DD-MON-YYYY');
25 end loop;
26 end;
27 /
Cursor has been processed
12-JAN-05
12-FEB-05
12-MAR-05
12-APR-05
PL/SQL procedure successfully completed.Rgds. -
How to Invoke a BPEL process when Insert/Update/Delete happens
Hi
As client requirement is we want to execute a BPEL process when there is a DML Operation (Insert/Update/Delete) on a particular table.
How do we handle this situation. Is there any alternatives if it is not possible.
Please point me if any documentaion is available.
Regards
KiranHi Kiran,
What integration tool you are using.
In Oracle BPEL PM, you can create an empty BPEL process with a "receive" activity and a database adapter partnerlink which polls for change in table records every specified time interval.
After receiving the table change, you can fire the appropriate BPEL process through "invoke" activity.
thanks
Saurabh -
Question: How to call a BPEL process from a PL/SQL procedure
Hi All,
Greetings to all BPEL people. I have a question on how can we call a BPEL process from a PLSQL procedure. It might be a stupid question but i wanted to know whether this fetaure is available in BPEL as our scenario requires us to explore if this functionality is available in BPEL.
Please let me know and also if possible please send me the links for the tutorials if it is available.
Thanks In Advance,
DibyaYes u can do it. there are two ways.
1) First one is using utl_http package of PL/SQL
In this case u can create SOAP request message & send it as Http request to your deployed BPEL process.
This package provides some methods like
set_header,write_text,get_response,read_text etc..
Following is part of code which may be helpful to you.
create or replace package body test_book_order_sub_pkg
is
FUNCTION test_book_order_sub(p_subscription_guid IN RAW,
p_event IN OUT WF_EVENT_T
Return VARCHAR2 IS
soap_request varchar2(30000);
soap_respond varchar2(30000);
http_req utl_http.req;
http_resp utl_http.resp;
launch_url varchar2(240) ;
begin
DBMS_OUTPUT.Put_Line('Subscription : Order has been booked');
soap_request:='<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body xmlns:ns1="http://xmlns.oracle.com/BES_BookOrder">
<ns1:BES_BookOrderProcessRequest>
<ns1:input>725</ns1:input>
</ns1:BES_BookOrderProcessRequest>
</soap:Body>
</soap:Envelope>';
http_req:= utl_http.begin_request
('http://172.28.5.191:8888/orabpel/default/BES_BookOrder/1.0',
'POST',
'HTTP/1.1'
utl_http.set_header(http_req, 'Content-Type', 'text/xml') ;
utl_http.set_header(http_req, 'Content-Length', length(soap_request)) ;
utl_http.set_header(http_req, 'SOAPAction', 'initiate');
utl_http.write_text(http_req, soap_request) ;
http_resp:= utl_http.get_response(http_req) ;
utl_http.read_text(http_resp, soap_respond) ;
utl_http.end_response(http_resp) ;
DBMS_OUTPUT.Put_Line(soap_respond);
return('SUCCESS');
end test_book_order_sub;
end test_book_order_sub_pkg;
2) Second way is make your BPEL process listening to some database Queue(use AQ Adapter). & then put some message in tht queue from ur Pl/SQL code . This will also initiate BPEL instance. Check out AQAdapter tutorials.
/mishit -
How to call a BPEL process from Oracle Apps Java Concurrent program
Hello,
I need to trigger a BPEL process from Oracle Apps. Can anybody tell me how to do that? I have two triggering option--
1. On button click from a Form 6i screen
2. Using Java Concurrent program.
Thanks in advance.
DebkantaI am not sure how concurrent program works, but may be one of the way might work out, let me know if Java Concurrent Program works a bit different way
- [if async] Through concurrent program, you can insert message token to db or aq, and BPEL can be instantiated from there
or
- If it supports pure java call, then you can look at multiple documents (e.g. http://www.oracle.com/technology/products/ias/bpel/pdf/orabpel-Tutorial7-InvokingBPELProcesses.pdf) to invoke your process
- You can also use oracle db utility to invoke soap operation and get the result back
HTH,
Chintan -
Getting while running the BPEL process from java
Hi All,
We are using the following java code to run the BPM process.
package callBPMProcess;
import java.util.Hashtable;
import java.util.UUID;
import java.util.List;
import javax.naming.Context;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.facade.Composite;
import oracle.soa.management.facade.Service;
import oracle.soa.management.facade.CompositeInstance;
import oracle.soa.management.facade.ComponentInstance;
import oracle.fabric.common.NormalizedMessage;
import oracle.fabric.common.NormalizedMessageImpl;
import oracle.soa.management.util.CompositeInstanceFilter;
import oracle.soa.management.util.ComponentInstanceFilter;
import java.util.Map;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.Element;
import java.io.*;
public class StartProcess {
public StartProcess() {
super();
Hashtable jndiProps = new Hashtable();
jndiProps.put(Context.PROVIDER_URL, "http://ytytry.4234434.com:7001/soa-infra");
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
jndiProps.put(Context.SECURITY_PRINCIPAL, "weblogic");
jndiProps.put(Context.SECURITY_CREDENTIALS, "funnyj0ke");
jndiProps.put("dedicated.connection", "true");
String inputPayload =
"<process xmlns=\"http://xmlns.oracle.com/HelloWorld/Helloworld/BPELProcess1\">\n" +
" <input>hello</input>\n" +
"</process>\n" ;
Locator locator = null;
try {
// connect to the soa server
locator = LocatorFactory.createLocator(jndiProps);
String compositeDN = "default/Helloworld!1.0";
// find composite
Composite composite = locator.lookupComposite("default/Helloworld!1.0");
System.out.println("Got Composite : "+ composite.toString());
// find exposed service of the composite
Service service = composite.getService("bpelprocess1_client_ep2");
System.out.println("Got serviceName : "+ service.toString());
// make the input request and add this to a operation of the service
NormalizedMessage input = new NormalizedMessageImpl();
String uuid = "uuid:" + UUID.randomUUID();
input.addProperty(NormalizedMessage.PROPERTY_CONVERSATION_ID,uuid);
// payload is the partname of the process operation
input.getPayload().put("payload",inputPayload);
// process is the operation of the employee service
NormalizedMessage res = null;
try {
res = service.request("process", input);
} catch(Exception e) {
e.printStackTrace();
Map payload = res.getPayload();
Element element = (Element)payload.get("payload");
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(element);
transformer.transform(source, result);
System.out.println("Result\n"+sw.toString());
System.out.println("instances");
CompositeInstanceFilter filter = new CompositeInstanceFilter();
filter.setMinCreationDate(new java.util.Date((System.currentTimeMillis() - 2000000)));
// get composite instances by filter ..
List<CompositeInstance> obInstances = composite.getInstances(filter);
// for each of the returned composite instances..
for (CompositeInstance instance : obInstances) {
System.out.println(" DN: " + instance.getCompositeDN() +
" Instance: " + instance.getId() +
" creation-date: " + instance.getCreationDate() +
" state (" + instance.getState() + "): " + getStateAsString(instance.getState())
// setup a component filter
ComponentInstanceFilter cInstanceFilter = new ComponentInstanceFilter();
// get child component instances ..
List<ComponentInstance> childComponentInstances = instance.getChildComponentInstances(cInstanceFilter);
// for each child component instance (e.g. a bpel process)
for (ComponentInstance cInstance : childComponentInstances) {
System.out.println(" -> componentinstance: " + cInstance.getComponentName() +
" type: " + cInstance.getServiceEngine().getEngineType() +
" state: " +getStateAsString(cInstance.getState())
System.out.println("State: "+cInstance.getNormalizedStateAsString() );
} catch (Exception e) {
e.printStackTrace();
private String getStateAsString(int state)
// note that this is dependent on wheter the composite state is captured or not
if (state == CompositeInstance.STATE_COMPLETED_SUCCESSFULLY)
return ("success");
else if (state == CompositeInstance.STATE_FAULTED)
return ("faulted");
else if (state == CompositeInstance.STATE_RECOVERY_REQUIRED)
return ("recovery required");
else if (state == CompositeInstance.STATE_RUNNING)
return ("running");
else if (state == CompositeInstance.STATE_STALE)
return ("stale");
else
return ("unknown");
public static void main(String[] args) {
StartProcess startUnitProcess = new StartProcess();
But we getting the fallowing error.Can some body help out us.
SEVERE: Failed to create a DirectConnectionFactory instance (oracle.soa.api.JNDIDirectConnectionFactory): oracle.soa.api.JNDIDirectConnectionFactory
javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at oracle.soa.management.internal.ejb.EJBLocatorImpl.<init>(EJBLocatorImpl.java:166)
at oracle.soa.management.facade.LocatorFactory.createLocator(LocatorFactory.java:35)
at callBPMProcess.StartProcess.<init>(StartProcess.java:53)
at callBPMProcess.StartProcess.main(StartProcess.java:152)
Caused by: java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
... 7 more
Process exited with exit code 0.
Thanks in advanced,
Narasimha.
Edited by: parker on Mar 27, 2011 11:55 PMLooks like you don't have WebLogic classes on the classpath:
javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]
Other options for creating an instance are to use a web service call or one of the other adapters (e.g. JMS). If you need to directly start a process you might also look at this blog from the ATeam:
http://redstack.wordpress.com/worklist/
The specific example for getting the tasks is at: http://redstack.wordpress.com/2011/03/09/implementing-task-initiation/
Then the real work of creating an instance from the initiator tasks is at: http://redstack.wordpress.com/2011/03/09/creating-the-domain-layer-for-the-worklist/ -
DOS 11g SOA have the Locator API's - How to Invoke a BPEL process from Java
In BPEL 10.1.3.1, a java client could use the "Locator" API's to look up a BPEL service and invoke it directly from Java,
Is that still present in SOA 11g ? Or is there another way to look up the BPEL process ...
Here's an example of the 10g BPEL Service locator facilities :
Get the BPEL service locator. This is retrieved as follows:
loc = new Locator(domain, domainPassword);
The initial installation BPEL domain is "domain" and the initial password is "bpel". We then use the locator to get the delivery service. We could also use the locator to retrieve the workflow service.
IDeliveryService svc = (IDeliveryService)loc.lookupService(IDeliveryService.SERVICE_NAME);
Now we have the delivery service we can "deliver" requests to the BPEL process. To do this we first need to create a new message.
NormalizedMessage msg = new NormalizedMessage();
String content = "<SyncHelloWorldProcessRequest xmlns=\"http://antony.blog/SyncHelloWorld\">"+
"<input>"+
name+
"</input>"+
"</SyncHelloWorldProcessRequest>";
msg.addPart(msgPart, content);Can you please tell me how to include adf binding.ws in composite.xml ? My composite.xml for your ref:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle SOA Modeler version 1.0 at [11/1/10 5:41 PM]. -->
<composite name="BPEL2"
revision="1.0"
label="2010-11-01_17-41-11_593"
mode="active"
state="on"
xmlns="http://xmlns.oracle.com/sca/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy"
xmlns:ui="http://xmlns.oracle.com/soa/designer/">
<import namespace="http://xmlns.oracle.com/CallBPEL_jws/BPEL2/BPELProcess1"
location="BPELProcess1.wsdl" importType="wsdl"/>
<service name="bpelprocess1_client_ep" ui:wsdlLocation="BPELProcess1.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/CallBPEL_jws/BPEL2/BPELProcess1#wsdl.interface(BPELProcess1)"/>
<binding.ws port="http://xmlns.oracle.com/CallBPEL_jws/BPEL2/BPELProcess1#wsdl.endpoint(bpelprocess1_client_ep/BPELProcess1_pt)"/>
</service>
<component name="BPELProcess1">
<implementation.bpel src="BPELProcess1.bpel"/>
</component>
<wire>
<source.uri>bpelprocess1_client_ep</source.uri>
<target.uri>BPELProcess1/bpelprocess1_client</target.uri>
</wire>
</composite>
Eric, when I select the BPEL wsdl file in "Create Web Service Data Control" wizard, immediately I am getting the error. When I click 'OK', the 'Service' dropdown is disabled and blank in the wizard.
Thanks for pointing to the sample application URL. But it is built in jdev 10g. Can I migrate it to 11g?
Thanks both of you!
Maybe you are looking for
-
so i have assembled my new system: Athlon 64 x2 AM2 4200+ Zalman CNPS9500 K9N Platinum Sli OCZ DDR2 PC2-5400 667MHz EL Gold Edition 2GB Dual Channel Kit XFX Geforce 7600GT 256mb XXX edition (another one will be added today for SLI) a SATA drive and a
-
Libraries lost-no longer exist
Help, We have 2 5th generation Ipods and a Nano. No problems with my Nano but when I connect either 5th gen Ipods none of the libraries exist. I message "do not disconnect" is on both ipods and they are both frozen with that message. I did disconnect
-
In Web Gallery HTML, how can I show Slide Titles?
I am trying to use the HTML Gallery module within Bridge to create a photo archive. In all respects the appearance of this module is perfect for what i want to do, however it does not display the slide title. Some of the other modules do display the
-
Connecting to standard TV set?
Hello, would like to know if anyone has any tips for connecting my powerbook directly to my TV for viewing both commercial DVD (through idvd) and avi files (through VLC) I can get an image and audio (s-out). However, the video window needs to be way
-
Revising forms previously created using Form Wizard
I have a form that I previously created in Word, converted to pdf and then used the Form Wizard to add the form fields. I now need to revise the form in Word. Is there an easy way to copy the form fields previously used into the new version without h