Search This Blog

SBL-EAI-04367: The 'Service Name' User Property is not defined in the virtual BusComp '%1'.

Applies to: Siebel Tools - Version: 7.5.2 [15051] to 7.8.2.9 [19238] - Release: V7 to V7
z*OBSOLETE: Microsoft Windows 2000
Product Release: V7 (MidMarket)
Version: 7.5.2.216 [16084] MME
Database: Microsoft SQL Server 2000
Application Server OS: Microsoft Windows 2000 Server
Database Server OS: Microsoft Windows 2000 Server

This document was previously published as Siebel SR 38-1043227123.
SymptomsSBL-EAI-04367, SBL-UIF-00415
We would like to dynamically change the value of a Symbolic URL based on an argument passed by an URL we send to our customers.
CauseCustomer needs to dynamically change the value of a Symbolic URL based on an argument passed by an URL.
SolutionMessage 1[1 of 8]
For the benefit of other readers, the customers requirement was to launch Siebel from a url sent to their customers, opening a specific view. The view opened needed to contain an external web site, with this website being determined dynamically through the URL employed to open Siebel. The requirement was that the website display fill the view section of Siebel, with the navigation buttons remaining inplace.

The solution suggested to provide this functionality has 2 parts. Part 1 is displaying the external web page, and Part 2 is retrieving the url / symbolic url from the URL used to open siebel.

Part 1: Displaying the external web page in siebel utilising IFRAME or WebBrowser Control symbolic URL disposition:

You can utilise a symbolic URL to display the page within the view display area of Siebel. This will result in the Siebel Tabs still being available, with the external web site appearing as a Siebel view. Depending on whether your external website utilises frames you can use either a WebBrowser control disposition type, or an IFRAME. More information on this can be found on SupportWeb, Service Request (SR) 38-853872551, entitled "Using Web Conrol Symbolic URL disposition with embedded browser ActiveX control" and also SR 38-879258651 entitled "Applet containing an external web page in Siebel 7"
Message 2[2 of 8]
The following example utilises a calculated field, and should be changed to utilise a Symbolic URL (details in SRs mentioned earlier) if required.

Create a new web template applet to contain JUST the content required. For example :
<!-- Template Start: FDIFrameApplet.swt -->

<swe:form>
<swe:control id="1301" hintMapType="FormItem">
<swe:this property="FormattedHtml" hintText="Field"/>
</swe:control>
</swe:form>

<!-- Template End: FDIFrameApplet.swt -->

Create a new web template for the view, which has the minimal required elements. For example:

<!-- Template Start: FDViewBasic.swt -->

<swe:include file="CCHTMLHeader.swt"/>

<swe:layout viewDisplayMode="Layout">

<!------------ Start: View Layout Table ------------------------->
<table width="100%" height="100%" align="center" cellspacing="0" cellpadding="0" border="0" class="LayoutView">

<!---------- Start: View Layout; Applet Titles & Mover Controls --------->
<tr valign="top">
<td>

</swe:layout>

<!------------ Main Content Area ---------------------------->
<swe:for-each count="1" iteratorName="currentId" startValue="1">
<swe:applet hintMapType="Applet" id="swe:currentId" property="FormattedHtml" hintText="Applet" var="Parent"/>
</swe:for-each>
<!-- ---------- End Main Content Area ------------------------>

<swe:layout viewDisplayMode="Layout">
<!---------- End: View Layout; Applet Titles & Mover Controls --------->
Message 3[3 of 8]

</td></tr></table>
</td>
</tr>
</table>
<!------------ End: View Layout Table ------------------------>
</swe:layout>

<swe:include file="CCHTMLFooter.swt"/>

<!-- Template End: FDViewBasic.swt -->


Create new web templates within tools which point to the new template files. Create a new applet which utilises the new applet template, and a new view which utilises the new view template. Place the new applet in the view.

Create a new calculated field in the Account business component (or other BC which the applet is based on - later example will utilise a virtual business component) with the following properties (change to suit) :
Name: FDIFrame
Calculated: Y
Calculated Value: '<iframe src="http://www.yoururl.com" width="100%", height="99%" frameborder=0></iframe>'

Please note, the ' at the start and end are required.

Add a new control to the applet with the following properties on the control:
Field: FDIFrame - Field name created earlier
HTML Display Mode: DontEncodeData
HTML Type: Field

Add the control to the UI display for the new applet, compile all changes and test.

This solution will work for IFrames and WebBrowser Control symbolic URL disposition types (More information in Siebel Bookshelf)

You will need to add the new view to the screen list, and page tabs for the Application, and also set the correct responsibilities for the view.
Message 4[4 of 8]
Part 2: Retrieving the symbolic URL or url from the URL used to open Siebel.

For example, if a user is sent a URL like the following:
http://fdixonp4/callcenter_enu/start.swe?SWECmd=ExecuteLogin&SWEUserName=SADMIN&SWEPassword=SADMIN&myParam=http://www.url.com&SWEAC="SWECmd=GotoView,SWEView=EquisView"

Siebel application will open, the user will be logged in as SADMIN, they will be taken to the view EquisView (which contains the external site), and web site http://www.url.com will be displayed (specified by myParam).

The customer is taken to the view containing an IFRAME by the SWEAC command (7.5.2 replacement for SWEAuxCmd). The IFRAME in the new view points to a field in a virtual business component (VBC). The business service for the VBC returns the value of the profile attribute for the single field in the VBC, which is displayed as a web page through the IFRAME. This also works with WebBrowser control symbolic url disposition type.


The following steps provide an example solution (All code provided as example only):

Create a new business service with the following properties:
Name: EquisBSTest
Class: CSSService
Server Enabled : True

Create a new Business Service Method for EquisBSTest :
Name: getHTTPVars
Display Name: getHTTPVars
Message 5[5 of 8]
Edit the SERVER script for the BS and add the following:
function Service_PreCanInvokeMethod (MethodName, &CanInvoke)
{
if (MethodName == "getHTTPVars") {
CanInvoke = "TRUE";
return (CancelOperation);
};
return (ContinueOperation);
}


function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if (MethodName == "getHTTPVars") {

var oBS = TheApplication().GetService("Web Engine HTTP TXN");
var inPS = TheApplication().NewPropertySet();
var outPS = TheApplication().NewPropertySet();

var strName = "";
oBS.InvokeMethod("GetAllRequestParameters", inPS, outPS);
strName = outPS.GetFirstProperty();
while (strName != "") {
strName = outPS.GetNextProperty();
};

var strURL = outPS.GetProperty("myParam");
if (strURL != "") {
TheApplication().SetProfileAttr("myParam",strURL);
};
return (CancelOperation);
};

return (ContinueOperation);
}


EquisBSTest Business Service retrieves the parameter from the URL. In this example the parameter is called 'myParam', please replace to meet your requirements.


Next, create another business service as follows:
Name: EquisBS
Class: CSSService
External Use: True
Server Enabled : True

Ths business service (EquisBS) will return the URL to be displayed to the VBC utilised by the applet.
Message 6[6 of 8]
Please add the following server script:
function Service_PreCanInvokeMethod (MethodName, &CanInvoke)
{
if ((MethodName == "Init") || (MethodName == "Query")) {
CanInvoke = "TRUE";
return (CancelOperation);
};
return (ContinueOperation);
}

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if (MethodName == "Init") {
Outputs.SetProperty("SymbolicTest","");
Outputs.SetProperty("UrlToDisplay","");
return (CancelOperation);
};

if (MethodName == "Query") {
var row = TheApplication().NewPropertySet();

var strURL = TheApplication().GetProfileAttr("myParam");
if (strURL == "") {
var bsTest = TheApplication().GetService("EquisBSTest");
var inputs = TheApplication().NewPropertySet();
var outputs = TheApplication().NewPropertySet();

bsTest.InvokeMethod("getHTTPVars", inputs, outputs);

strURL = TheApplication().GetProfileAttr("myParam");
};


// Use this if you wish to utilise symbolic url.
// Replace fdixon01 with the symbolic url relevant to the value of
// strURL retrieved from the profile attribute.
var strFieldValueSym = "fdixon1";
row.SetProperty("SymbolicTest",strFieldValueSym);

// Use this for iframe example, pulling url directly from originating URL.
var strFieldValue = '<iframe src="' + strURL + '"" width="100%", height="99%" frameborder=0></iframe>';
row.SetProperty("UrlToDisplay", strFieldValue);

Outputs.AddChild(row);

return (CancelOperation);
};
Message 7[7 of 8]
return (ContinueOperation);
}

Next, we need to create the Virtual Business Component that will return the URL as a field, for use within the applet display. Create a Business Component with the following properties:
Name: EquisGotoURL
Class: CSSBCVExtern

Add a two fields to the BC, with only the following property changed from new record defaults:
Name: UrlToDisplay - Used for Iframe example
Name: SymbolicTest - Used for symbolic URL example.

Create a new Business Object and add EquisGotoURL as the only Business Component.

Setup your applet and view as specified in part 1, pointing to the new BO/BC (EquisGotoURL) and field (UrlToDisplay OR SymbolicTest).

The applet / control properties are as follows:
Applet:
Class: CSSFrameListWeb

For SymbolicURL test example, the 'Analytics Applet' web template was utilised, and the control rendered through a list column.

Control for IFrame:
Field: UrlToDisplay
Field Retrieval Type: Blank
HTML Display Mode: DontEncodeData


List column for Symbolic URL:
Field: SymbolicTest
Field Retrieval Type: Symbolic URL
HTML Display Mode: EncodeData


Add the view to a screen and the application. Compile and run the application, adding the new view to the responsibilities for the required users.
Message 8[8 of 8]
The URL to login the user in, take them to the new view and load the external web page is as follows (please modify for your environment):
http://fdixonp4/callcenter_enu/start.swe?SWECmd=ExecuteLogin&SWEUserName=SADMIN&SWEPassword=SADMIN&myParam=http://www.url.com&SWEAC="SWECmd=GotoView,SWEView=EquisView"

To make this work for anonymous users, please ensure that anonymous users have the correct responsibilities for the view, then use the following:
http://fdixonp4/callcenter_enu/start.swe?SWECmd=GotoView&SWEView=EquisView&myParam=http://www.siebel.com


Thank you

Siebel Technical Support.








Applies to: Siebel Call Center - Version: 8.0.0.4 [20417] - Release: V8

Information in this document applies to any platform.
Symptoms
Error combinations (SBL-SVC-00155; SBL-EAI-04376) and (SBL-EAI-04367; SBL-UIF-00230) during ADM deployment of Correspondence Templates on target system.
CauseThe error is misleading, it says that there is no file attached to this record, but records are present.
SolutionThe following deployment filter has resolved the problem:
[Active] like 'Y' AND [CorrtmplFileExt] like 'doc'
ReferencesBUG:10504793 - EXPORT FAILS FOR ADM COMM PACKAGE DATA TYPE
NOTE:504372.1 - Error using ADM in BC 'Comm Package Item'
Related


Products


Siebel > Customer Relationship Management > CRM - Enterprise Edition > Siebel Call Center
Keywords

 
CORRESPONDENCE
 
Errors

 
SBL-EAI-04376; SBL-SVC-00155; SBL-UIF-00230; SBL-EAI-04367


1 comment:

  1. Hi,
    Part 1 is not working.It is displaying the value of the calculated field on the applet.
    Please help... :(

    ReplyDelete