Use the following rules during procedure definition.
Use the provided procedure notepad to write your Service Fulfillment Manager procedure.
Write an anonymous PL/SQL block as to insert into the procedure body.
Use capital letters for all PL/SQL reserved words and the constructs provided by Oracle Provisioning.
Use the standard programming constructs provided by PL/SQL in your block of code, if desired.
Always add the EXCEPTION block at the end of the procedure.
The procedure builder provides a structure for building your procedures. For example, to build a new procedure, you simply insert your code into the following procedure definition.
/*******************************************************************************
This procedure calculate a new value for the Work Item parameter.
It has the follwoing input and output parameters:
p_order_id IN NUMBER -- order ID
p_wi_instance_id IN NUMBER -- wprlote, omstamce OD
p_param_val IN VARCHAR2 -- parameter initial value
p_param_ref_val IN VARCHAR2 -- reference value (if order amendment)
p_parmam_eval_val OUT VARCHAR2 -- parameter new value
p_param_eval_val OUT VARCHAR2 -- parameter new value
p_param_eval_ref_val OUT VARCHAR2 -- new reference value (if order ammendment)
*******************************************************************************/
-- Enter your procedure below:
DECLARE
-- Your declarations...
BEGIN
-- Your procedure body...
END;
:
EXCEPTION
WHEN OTHERS THEN
RAISE
END;
After creating a new procedure, you must compile it. The procedure builder prompts you with compilation errors if you have either of the following conditions exist:
The Oracle Application Object Library loader is a general purpose data migration tool that is used for patching seed data, delivering translations, or copying setup or transaction data from development to production systems.
The loader is a concurrent program named FNDLOAD. Enter the following command at a UNIX prompt.
FNDLOAD apps/pwd 0 Y mode configfile datafile entity [ param ... ]
The table following lists the parameters used with this executable and describes them.
Parameter | Description |
---|---|
apps/pwd | Specifies the APPS schema and password.
|
0 Y | Concurrent program flags |
mode | Specifies either UPLOAD or DOWNLOAD operation.
|
configfile | Specifies the configuration file to use. .
|
datafile | Specifies the data file to write.
|
entity | Specifies the entity type to begin the download or upload.
|
param | Specifies zero or more additional parameters that are used to provide bind values in the access SQL (for both the UPLOAD and DOWNLOAD operations).
|
The table following lists the Loader files and provides a description of each.
Name | Description | Conditions | Parameters |
---|---|---|---|
xnpcbevt.lct | Callback Events | First run xnpmsgps.lct | XNP_CALLBACK_EVENTS
|
xnpevtsb.lct | Event Subscribers | First load the fulfillment element data | XNP_EVENT_SUBSCRIBERS
|
xnpgeoas.lct | Geographic Areas and Hierarchy | First load the Areas, then the Hierarchy | XNP_GEO_AREAS
XNP_GEO_HIERARCHY
|
xnpmsgak.lct | Message Acknowledgments | First run | xnpmsgps.lct XNP_MSG_ACKS
|
xnpmsgps.lct | Messages | None | XNP_MSG_TYPES
|
xnpsnumr.lct | Served Number Ranges | First load the fulfillment element data, then run xnpsptre.lct | XNP_SERVED_NUM_RANGES
|
xnpsptre.lct | Service | Providers None | XNP_SERVICE_PROVIDERS
|
xnpstats.lct | Porting Status Types | None | XNP_SV_STATUS_TYPES
|
xnptmrpb.lct | Timer Publishers | First run xnpmsgps.lct | XNP_TIMER_PUBLISHERS
|
For additional information, see the files in the following application directories.
Template configuration file
/fnddev/fnd/11.5/admin/import/fndstd.lct
Existing AOL configuration files
/fnddev/fnd/11.5/admin/import/*.lct
Perform the following steps to create either an Activity or Process Timer.
None
Open the iMessage Studio.
Define the Activity Timer:
Specify the Internal Name.
Select Timer from the Type LOV.
Specify a Display Name.
Specify a Description.
Select a value from the Priority LOV.
Select Timer Queue from the Queue Name LOV.
Specify a Responsibility.
Select the Data Source tab.
Define the Delay and Interval for the Activity Timer:
Select the tree root for the timer.
Select SQL Query from the Data Source Type LOV.
Select One and Only One from the Data Source Cardinality LOV.
Specify the Source for the timer.
Select the Detail tab.
Click Compile to compile the timer.
If all goes well, the timer will compile without errors. If an error is encountered, verify that you have followed steps 2 - 5 above correctly.
Click the View button to examine the PL/SQL package that is generated as a result of compiling the Activity Timer (if desired).
Click Apply.
The source SQL structure for the Activity Timer must be of the following format:
SELECT D delay, I interval FROM dual
D is the delay integer value (seconds)
I is the interval integer value (seconds)
After setting the source SQL, you need to also:
Select the Delay branch from tree root for the Activity Timer.
Specify a reference for the Delay branch.
The reference value Delay branch must map to the select-list specified in step 4 above. The reference value must be of the following format:
xnp$<activity_timer_name>.<select-list column name>
<acitivity_timer_name> is the Internal Name defined in step 4.
<select-list column name> is the first select-list value of the SQL source specified in step 5.
After setting the Delay reference value, you need to also:
Select the Interval branch from tree root for the Activity Timer.
Specify a reference for the Interval branch.
The reference value Interval branch must map to the select-list specified in step 4. The reference value must be of the following format:
xnp$<activity_timer_name>.<select-list column name>
<activity_timer_name> is the Internal Name defined in step 4.
<select-list column name> is the second select-list value of the SQL source specified in step 5.
Perform the following steps to create a message timer.
Before creating the message timer, you must first create the message with which it is associated.
Open the iMessage Studio.
Define a Message Timer:
Specify an Internal Name.
Select Message from the Type LOV.
Specify a Display Name.
Specify a Description.
Select a value from the Priority LOV.
Select Outbound Message Queue from the Queue Name LOV.
Click Apply.
You must then use the Event Subscriber to associate a Timer Message (Different Timer which is an Activity Timer) to this newly created message.
Define Event Subscriber which is associated with a Timer
Access the Event Subscriber screen from the Configuration tab
Select the event defined in step 3 above
Click the Timers tab
Select the Activity Timer defined in step 3 above from the Timer LOV
Click Apply
Applications register with the Event Manager if they need information on specific messages (events) or all instances of that message type. An application can be an external system, an operating system or a mediation layer.
Every message and event is sent to the Event Manager which becomes the source of distribution for events and messages. This is known as event subscription. Event subscription is a business process handled within Workflow.
Applications can be set as default subscribers to specific events and messages. This is configured in the Event Subscriber utility.
Applications can show interest in a specific instance of a message by specifying the REFERENCE_ID of the message.
Applications can register for one of several response messages by using the reference identifier.
When a message with a reference identifier arrives, the Event Manager performs the following tasks:
It executes the validation logic.
It executes the processing logic. It does this before delivering the message to all registered applications.
Applications can show interest in all instances by registering with a NULL reference identifier.
If an application is registered for a specific instance, the registration is automatically unsubscribed after delivering that message.
Upon arrival of an expected response:
The message is delivered to the registered application.
The other expected response is marked EXPIRED.
In the Event Manager, it is possible for default subscribers to subscribe to specific events of the application. When a message occurs, the Event Manager ensures that an outbound message is automatically sent to the subscriber identified by a Fulfillment Element, OSS or gateway.
It is possible to associate one or more responses to an event.
A response is set during the configuration in the form of acknowledgments.
Create the message or event that is to the trigger for a response.
Configure an Acknowledgment/ Response to the message or event that you created in step 1.
Link the Acknowledgment that you created in step 2 to the message/event that you created in step 2.
If desired, you can associate one or more responses with an event. A response is an acknowledgment to a message.
For example, valid message responses for the message "Is this an existing customer?" are:
"Yes, this is an existing customer."
"No, this is not an existing customer."
These responses are messages in themselves and must be configured in Oracle Provisioning before they can be linked as responses to a message.
The Concurrent Manager framework provided by Oracle Applications is used to administer the Oracle Service Fulfillment Manager Concurrent Manager. The Concurrent Manager includes a specialized Controller program that is used by the Oracle Service Delivery Platform to start (or stop) adapters and/or dequeuers.
Orders within the Service Delivery Platform are processed using various queues. The processing of items of a queue is done with the help of dequeuers. These dequeuers are background processes which continuously poll a queue and process the items from the queue.
The Service Fulfillment Manager of various network elements is accomplished with the use of adapters. Adapters are processes which are specialized in certain protocols. (Telnet, FTP, or other protocols.). You direct the adapters to perform various tasks in the system.
Note: To administer the Oracle Service Fulfillment Manager Concurrent Manager, open the Administer Concurrent Managers form window available through Concurrent > Administer Manager.
Application Start is a concurrent request that is performed by the Oracle Service Fulfillment Manager Concurrent Manager.
You use the Application Start process to perform the following tasks:
Start the entire application, including the Controller, dequeuers and all adapters
Start only the Controller and the dequeuers
Start the Controller, the dequeuers and a subset of the adapters
The system automatically starts all the dequeuers and the Controller during the start process. If any dequeuers are already started, the number actually running is first determined, and matched against the number that are required to be started. The system automatically starts as many dequeuers as needed.
Note: You set the number of running dequeuers through the Queue Console, available through Administration > Queue Console.
Application Start and Stop are mutually exclusive processes. If one is pending, the opposite operation does not proceed until the first finishes. In addition, the Oracle Service Fulfillment Manager Concurrent Manager processes must be up and running.
In the a Navigator, select Applications > Start.
The Parameters box opens.
Enter a value in the Options field from the drop-down list of values.
See the Guidelines following for information on these choices.
Enter a value in the Fulfillment Element field that is to be included (or excluded) from the application start process.
This choice depends on the value that you chose in step 2, preceding. Again, see the Guidelines for details.
Enter a value (0 - 3) for the Debug Mode.
This value sets the level of logging that can be used for debugging purposes.
Click OK.
The Oracle SDP Start dialog box becomes available. Parameters that you set in the previous dialog box display in the Parameters field.
(Optional) Click Copy, if you wish to use start parameters from a prior start request, otherwise proceed to step 7.
If you chose this option, then select from the provided list and continue to step 10.
(Optional) Click Languages..., if you wish to change the default language used in generating the log entries, otherwise proceed to step 8.
If you chose this option, then place a check mark in the box next to the language, or languages, you wish to add. Continue to step 8.
(Optional) Click Schedules..., if you wish to change the default time at which this request is to be run. Perform either a or b, following.
Click Apply a Saved Schedule... to choose from a list of predefined schedules.
Chose an option from the Run the Job... list.You can set how often, and when, you wish the start request to run. Depending on which radio button you check, a number of additional fields display so that you may specify exact dates and times.
(Optional) Click Options..., to specify to whom, and in what language, you wish a notification to be sent. You can also direct the output log files to be sent to a specific printer.
Click Submit to initiate the start process and to close the dialog box.
Note: Each request generates a Request ID. You can use this Request ID to view the request status and the log entries through the View Requests form window, available through Concurrent > View Requests.
Options: The table following lists the available choices. This option indicates which adapters are to be started. You must select from the provided list of values.
Option | Description |
---|---|
ALL | All adapters (for all fulfillment elements) marked AUTOMATIC are started. (You set an adapter to AUTOMATIC through Administration > Connection Manager. You can also use the Adapter Properties form window to configure adapter properties.) |
INCLUDE | Only adapters marked AUTOMATIC that are associated with the designated fulfillment element are started. |
EXCLUDE | All adapters marked AUTOMATIC are started, except for those associated with the designated fulfillment element. |
NONE | No adapters are started. |
Fulfillment Element: Select the fulfillment element that is to be included or excluded (see the preceding table) from the application start. You must select from the provided list of values.
Debug Mode: Select the debugging mode to be used for the Controller and the dequeuer processes. You must select from the provided list of values.
The table following lists the available options.
Debug Level | Description |
---|---|
0 | No trace |
1 | Minimum trace |
2 | Medium trace |
3 | Maximum trace |
Note: Adapters are started with the debug level configured through the Adapter Properties window.
Application Stop is a concurrent request that is performed by the Oracle Service Fulfillment Manager Concurrent Manager.
You use the Application Stop process to perform the following tasks:
Stop the entire application, including the Controller, dequeuers and all adapters
Stop a subset of the adapters
Application Start and Stop are mutually exclusive processes. If one is pending, the opposite operation does not proceed until the first finishes. In addition, the Oracle Service Fulfillment Manager Concurrent Manager processes must be up and running.
In the a Navigator, select Applications > Stop.
The Parameters box opens.
Enter a value in the Options field from the drop-down list of values.
See the Guidelines following for information on these choices.
Enter a value in the Fulfillment Element field that is to be included (or excluded) from the application stop process.
This choice depends on the value that you chose in step 2, preceding. See the Guidelines for details.
Enter a value for the Stop Mode.
See the Guidelines following for information on these choices.
Click OK.
The Oracle SDP Stop dialog box becomes available. Parameters that you set in the previous dialog box display in the Parameters field.
(Optional) Click Copy, if you wish to use stop parameters copied from a prior stop request, otherwise proceed to step 7.
If you chose this option, then select from the provided list and continue to step 10.
(Optional) Click Languages..., if you wish to change the default language used in generating log entries, otherwise proceed to step 8.
If you chose this option, then place a check mark in the box next to the language, or languages, you wish to add. Continue to step 8.
(Optional) Click Schedules..., if you wish to change the default time at which this request is to be run. Perform either a or b, following.
Click Apply a Saved Schedule... to choose from a list of predefined schedules.
Chose an option from the Run the Job... list.You can set how often, and when, you wish the start request to run. Depending on which radio button you check, a number of additional fields display so that you may specify exact dates and times.
(Optional) Click Options..., to specify to whom, and in what language, you wish a notification to be sent. You can also direct the output log files to be sent to a specific printer.
Click Submit to initiate the stop process and to close the dialog box.
Note: Each request generates a Request ID. You can use this Request ID to view the request status and the log entries through the View Requests form window, available through Concurrent > View Requests.
Options: The table following lists the available choices. This option indicates which adapters are to be stopped. You must select from the provided list of values.
Option | Description |
---|---|
ALL | All adapters, for all fulfillment elements, dequeuers and the Controller are stopped. This option signifies the complete application stop. |
INCLUDE | Only adapters marked AUTOMATIC that are associated with the designated fulfillment element are stopped. |
EXCLUDE | All adapters marked AUTOMATIC are stopped, except for those associated with the designated fulfillment element. |
Fulfillment Element: Select the fulfillment element that is to be included or excluded (see the preceding table) from the application stop. You must select from the provided list of values.
Stop Mode: Select the mode to be used. You must select from the provided list of values.
The table following lists the available options.
Debug Level | Description |
---|---|
NORMAL | This specifies the standard shutdown mode. Depending on the choice that you made under Options, this could be the entire system, or only a subset of it. For example, if you select the NORMAL mode, and the Options value is set to ALL, then the following occurs:
|
ABORT | Specifies an abnormal mode of shutdown. All the running processes (as specified in the Options selection) are terminated at the operating system level. |
Oracle Service Fulfillment Manager comes with a set of predefined constructs that can be used to build procedures. These constructs are.
The SEND macro accepts a command string as an argument. This command string is sent to the fulfillment element as the command to be executed. You use the SEND macro to “send” commands to the network elements.
The signature of the SEND construct is as follows:
SEND(<command > <varchar2>, <encrypt flag> <varchar2>, <prompt (optional)> <varchar2>, <err code (out)> <number>, <error string (out)> <varchar2>)
The application stores all the transactions sent and received, to and from the fulfillment elements in its audit trail. However, it also provides a mechanism that allows you not to store, or write sensitive information contained in the service order request to the audit trail, if desired. Responses from fulfillment elements may also carry the same sensitive information.
Therefore:
If you set the encryption flag to Y, then you are disabling the logging of all responses from the fulfillment elements.
If you set the encryption flag to N, then you are enabling the normal logging of responses from the fulfillment elements.
The usage of the construct is defined as follows:
SEND(
<command> string which contains the command to be sent,this is where you specify your service parameters in $variable_name format.
<‘Y' or ‘N'> to indicate whether the command response must be logged into the audit trail,
<prompt> is an optional field which indicates the prompt at the Network Element after the execution of <command>>
<a number place holder for the out parameter error_code>,
<a varchar2 place holder for the out parameter error string>
);
Note the following restrictions on the use of the SEND macro.
For parameter values with white spaces, specify the corresponding $variable_names in double quotes.
Eliminate white spaces between SEND and the "(" following it.
Correct Usage: SEND(
Incorrect Usage: SEND (
Do not use SEND inside comments.
The SEND_HTTP macro accepts a command string as an argument. This command is then sent to the fulfillment element as the command to be executed using the HTTP protocol. Typically, in this scenario, the command is an URL.
The signature of the construct is as follows:
SEND(
<a string which contains the URL to be sent> ,
<‘Y' or ‘N' indicator which indicates whether the URL should be logged into the audit trail>,
<a number place holder for the out parameter error_code>,
<a varchar2 place holder for the out parameter error string>
);
Note the following restrictions on the use of the SEND_HTTP macro.
Eliminate white spaces between SEND_HTTP and the "(" following it.
Incorrect Usage: SEND_HTTP (
Correct Usage: SEND_HTTP(
The LOGIN macro accepts a command string as an argument. It uses the argument to initiate a connection. Use this macro to initiate a connection to a fulfillment element which has an interactive interface (for example, Telnet).
Note: The LOGIN construct should appear before the first SEND construct in the procedure.
The signature of the LOGIN construct is as follows:
LOGIN(
<a string which contains the command to be sent> ,
< a string which contains the command response expected>,
<a number place holder for the out parameter error_code>,
<a varchar2 place holder for the out parameter error string>
);
This SEND macro accepts a command string as an argument. It uses the argument to send the command set (connect) to the fulfillment element. One of the connection commands is executed.
The signature of the LOGIN construct is as follows:
SEND(
<a string which contains the command to be sent> ,
< a string which contains the command response expected>,
<a number place holder for the out parameter error_code>,
<a varchar2 place holder for the out parameter error string>
);
Note the following restrictions on the use of the LOGIN macro.
Use the LOGIN macro once only before any SEND construct.
Use the LOGIN macro only in a connect procedure.
Do not use order, line, work item, and fulfillment action as service parameters. The $ variables are fulfillment element attributes, and, as such, can not be used as service parameters.
The RESPONSE_CONTAINS procedure macro is a PL/SQL function that compares a user-defined string against the string returned by a fulfillment element in response to the last command that it received. The macro returns TRUE if the two strings match, otherwise it returns FALSE.
The signature of the construct is as follows:
RESPONSE_CONTAINS(
<a string which contains the string to be matched>
)
return BOOLEAN;
Note the following restrictions on the use of the RESPONSE_CONTAINS macro.
Do not use $ variables.
Eliminate white spaces between RESPONSE_CONTAINS and the "(" following it.
Incorrect Usage: RESPONSE_CONTAINS (
Correct Usage: RESPONSE_CONTAINS(
The GET_RESPONSE macro returns the response string from the fulfillment elements for the last command sent.
The signature of the construct is as follows:
GET_RESPONSE return VARCHAR2
The usage of the construct is defined as follows:
err_code number;
err_str varchar2(400);
lv_user varchar2(80);
BEGIN
lv_user := GET_PARAM_VALUE(‘$WI.user');
SEND(‘AddProfile -h $WI.hostname -p $FA.dbport -u $WI.user', ‘Y', err_code, err_str);
IF RESPONSE_CONTAINS(‘profile already exist') THEN
NOTIFY_ERROR(‘Error when Service Fulfillment Manager Cisco Secure HA Server. Subscriber ‘ || lv_user || ‘ already exists','A');
RETURN;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
Note the following restrictions on the use of the GET_RESPONSE macro.
Do not use $ variables.
Eliminate white spaces between RESPONSE_CONTAINS and the "(" following it.
Incorrect Usage: GET_RESPONSE (
Correct Usage: GET_RESPONSE(
Use the GET_PARAM_VALUE procedure macro to obtain the value of the parameter during run-time.
The signature of the construct is as follows:
GET_PARAM_VALUE (<parameter name> <varchar2>) return VARCHAR2
The <parameter name> is the name of the parameter in $ format.
The value returned by the function can be NULL.
When using this macro, specify the parameters as a $ variable. For example, parameter TN (if used inside a Service Fulfillment Manager procedure), is specified as $ORDER.TN.
Note the following restriction on the use of the GET_PARAM_VALUE macro.
Eliminate white spaces between GET_PARAM_VALUE and the "(" following it.
Incorrect Usage: GET_PARAM_VALUE (
Correct Usage: GET_PARAM_VALUE(
The NOTIFY_ERROR procedure macro indicates an abnormal exit point from the procedure. The Service Fulfillment Manager of a service order request at a fulfillment element has an ERROR status.
This macro appends or replaces a response initiated by the fulfillment element / network element. This is the input string.
The signature of the construct is as follows:
NOTIFY_ERROR(<user's string> <varchar2>, <mode> <char>)
The <user's string> contains a user-defined friendly message
The <mode> flag is either A or R.
A indicates that the user message is to be appended to the response string coming from the fulfillment element.
R indicates that the user message is to be replaced by the response string coming from the fulfillment element.
You use this macro under the following conditions:
You want to identify errors coming from the fulfillment element during the Service Fulfillment Manager process.
You want to identify errors when exiting from the Service Fulfillment Manager procedure.
You use the NOTIFY_ERROR macro to abort a Service Fulfillment Manager procedure.
You must follow every NOTIFY_ERROR instance in the procedure by a RETURN statement. This is the only way to abort the execution of the Service Fulfillment Manager procedure.
The Service Delivery Platform uses the <user's string> to display the Service Fulfillment Manager errors of a failed Service Order Request. Make this name user-friendly. This name provides the ability to translate cryptic network element error messages into those that are more user friendly.
Following are several example workflow procedures:
DECLARE
err_code number;
err_str varchar2(400);
lv_user varchar2(80);
BEGIN
lv_user := GET_PARAM_VALUE (‘$user');
SEND(‘AddProfile -h $hostname -p $dbport -u $user', ‘Y', err_code, err_str);
IF RESPONSE_CONTAINS (‘profile already exist') THEN
NOTIFY_ERROR(‘Error when Service Fulfillment Manager Cisco Secure HA Server. Subscriber ‘ || lv_user || ‘ already exists','A');
RETURN;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
DECLARE
err_code number;
err_str varchar2(400);
lv_user varchar2(80);
BEGIN
LOGIN(‘telnet $ip_address', ‘login:', err_code, err_str);
SEND(‘$username', ‘$Password:', err_code, err_str);
SEND(‘$Password', ‘$', err_code, err_str);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;