Thursday, May 31, 2012

Generate Quote using Narrative Reports in CRM On Demand

Hey Guys,

One thing we all think about is how to design a simple solution to a complicated requirement and so today lets see how to create a Narrative report for a 1:M relation. As you may know Narrative Report can be used only on one record. But, using a combination of reports, we can do the a LOT more!

All we need to do is create 2 reports linked to each other and add them to a Dashboard. let me show you how.

Step 1: Create a Opportunity Parent Report

Using Opportunities Subject Area (Reporting  or Real-Time) Add the fields you would like to use on the Opportunity Information Section of the Quote report.














In Step 2: Create Layout, Add a Narrative View and use the this code
Opportunity Parent Narrative View Code. Make sure you use the @"Number" symbol in the right places, or the values would display against the wrong columns.











You'll notice that the values are not correct in this preview, don't worry. since this report is not being filtered from the Prompt yet, the right values do not appear.

Save the report

Step 2:  Create a Opportunity Product Report










Using Opportunity Product Revenues Subject Area (Reporting  or Real-Time) Add the fields you would like to use on the Product List.
Note that I am filtering the contents of this report based on the results of the Opportunity Parent Report.
In Step 2: Create Layout, Add a Table or Pivot Table (Whichever works for you) and a Narrative View and use the this code Opportunity Parent Product Narrative View Code.




















You'll notice that the values are not correct in this preview, don't worry. since this report is not being filtered from the parent yet, the right values do not appear.

OK. Save the Report.

Step 3: Create a Dashboard

Create a New Dashboard and give it a name. In the Design Section add both the above reports.











Save the Dashboard.

Step 4: Create a Web Link (Last Step)

Create a Web Link on  Opportunity and in the URL text area, add the link to your Dashboard you created in Step 3. You can get the URL by Viewing the Source Code

Ex: https://secure-ausomxxxx.crmondemand.com/OnDemand/user/analytics/saw.dll?Dashboard&PortalPath=%2fshared%2fCompany_XXXXX_Shared_Folder%2f_portal%
2fOpportunityQuote+Report&Options=rfd&Action=Navigate&P0=1&P1=eq&P2=Opportunity%2E%22Opportunity%20ID%22&P3=%%%Id%%%

The %%%Id%%% will dynamically change on clicking the Web-Link from your Opportunity Detail Page and display the Opportunity and Opportunity Product Information on your Quote Report


Make sure you test the URL by Adding a Opportunity ID and running the URL in your browser.

After creating the Web-Link, add it onto your Opportunity Layout.


Finally: Let's see how this report works in reality.

Goto any Opportunity that has at least One Product associated











Now click the "Generate Quote" link that you added. You should now see your Opportunity and Opportunity Product Information in a beautifully formatted Quote Report.




















Now, it's time for you to go and impress your customers!

If you have any questions about the post, feel free to add your comments!

Cheers!
Ryan

Automate Siebel EIM Mapping using SQL

Hey Everybody,

Hope you all are doing Great!

It's been a long time since my last post, apologies for that! Anyway, I have decided to make up for that time and give you some great stuff!

Recently, I had a LOT of people asking for a way to Automatically generate EIM Mappings. I have written a post previously called Generate EIM mapping using SQL Script. However I made some new changes that will give you more information than before.

So here are the updated versions for Oracle and MS SQL

Output Preview











Document Links : Do what the document tells you are you're good!

Automate Siebel EIM Mapping using SQL_MSSQL
Automate Siebel EIM Mapping using SQL_Oracle

Watch out for more interesting Stuff!


Cheers!
Ryan


Tuesday, May 22, 2012

Thread Bar Updation


Sometimes Simplicity just does not precede complexity, but follows it. Recently while configuring Thread Bar for some views, we faced a trivial issue. Value of the Thread Field defined was not coming in the Thread bar.  We have specified the correct Thread Applet, Thread Field and Thread Title properties for the related views but only Thread Title was being displayed when we drilldown from List view to Form View. Google resulted this issue being faced by other users without fix.
Things got luckier for me when i found a similar article on support web which stated that this is the intended behavior of siebel when the underlying Business Objects of traversing views are same. However as workaround of this issue there are three options:

  1. Have different BO's for List View and Destination View.
  2. Remove thread bar and make use of IE back option.
  3. If it is business critical to have navigation path in thread bar then one can define Source Field and Destination Field in the drilldown from list View to form view. This setting of source field in the drilldown causes Thread Field to be displayed in the Thread Bar. However it comes with its own inherent issue in a way that user can't traverse through record set in Form view. 
Hope this post helps you while configuring thread bar and keeping business object context in mind. Yup simplicity follows complexity.

Happy Configuration!!

Monday, April 9, 2012

Validation Utility Service


Many  times we have wished that workflows could have ActiveViewName function so that we can perform actions based on the current view. For long i have been resolving this by using profile attributes in workflow but GetProfileAttr('ActiveViewName') is not bullet proof, as when we do Reload/Refresh profile attribute it clears out this profile attribute.



In our quest to overcome profile attribute usage, we discovered another siebel gem, rarely talked,business service "Validation Utility Service". This business service contains a method "GetActiveView" which returns active view name. One can directly use this business service in workflow and can get name of active view.

While writing this piece i also came across another siebel blog which talks about fetching active view details using different business service. Hope either of business service helps your cause.

Happy Crunching!!



Monday, April 2, 2012

Reload Profile Attributes


There are times one has to wear multiple hats as part of job, definitely a mandate if you are married. Sometimes a Manager has to work as team lead or vice versa.

Typically such scenarios are easily handled in siebel using "Change Position" concept. However trouble starts when you have used persistent profile attributes in the search scenarios which fails when user opts for changing position specially if search is based on profile attributes like Job Title, Position Type.

Recently we faced similar scenarios as one of the user had two roles. We used "Division Name" profile attribute to display list of employees while picking SR owner. Trouble started when user did change position and for the other position intended list of employee was not coming. Division Name profile attribute is available in personalization profile BC using join and loaded in session when user logged in. The issue is profile attributes doesn't refresh when you do change position. Even a call to "LoadUserAttributes" method after "Change Position" failed to refresh this attribute.

However one cool thing this method does is it returns correct output for DivisionName function. It doesn't refresh other profile attributes which are pulled from joins but it reloads calculated profile attributes based on functions like PositionName, DivisionName and OrganizationName. This was good for us as we based the profile attribute on DivisionName() function and bingo, the resultant set of employees was perfect.  Hope it helps if you are struggling with similar scenario or planning to use profile attributes in search conditions.

Awaiting some alternate tips in order to refresh profile attributes.

Happy Reloading!!

Thursday, March 22, 2012

HTML content in BIP Report

This is war-cry for all BIP gladiators.

Recently while working with BIP reports we hit a road block in displaying HTML content. We need to display a control in BIP report with proper HTML formatting but however when report is rendered it displays HTML tag as is without formatting. The data input is RTCEmbedded control in siebel which saves data encapsulated in HTML tags but instead of transformation those tags are displayed in BIP report as normal text. We tried with integration approach as well as SQL query based reporting architecture but of no luck.

From Tim's blog we got an idea of XSLFO format but it is of not much help as while retrieving the content from database BIP engine process data as & l t; instead of proper HTML < or > tags i.e. they are not escaped. I have already tried below options to fail.

  •  Escaping <,> to its ascii equivalent in sql
  •  Using clob/Nclob column to store data
As a stop gap solution we are currently chopping HTML tags from the data using XSL and displaying content in a plain format. Any jail break on this trivial issue is most welcome. 

Happy Reporting!!



Wednesday, March 7, 2012

RTCEmbedded Control

"When the solution is simple, God is answering"- Albert Einstein

Recently we were asked to implement a embedded text editor in a control which could facilitate user for text formatting including features such as bold, italic,font, color etc.  The first reaction was can-we-do-it types with nothing popping in mind (Yeah, thought of Email Templates view never occurred ).But with some help of support web solution turned out to be much much simpler.

We can achieve this by using control of type "RTCEmbedded". This control type provides an embedded text editor which supports below html tag:
  • Bold < STRONG>
  • italic <EM>
  • Underline <U>
  • Ordered list <OL>
  • List items <LI>
  • <P>
  • <FONT>
  • <BLOCKQUOTE >


However there are certain caveats while using this type:
1 - Control doesn't turn out grey in case of read only conditions.
2 - Throws an error when reaching field length and clears out everything forcing user to renter everything.
3 - It is not currently possible to paste text and graphics (such as graph or image) within such controls.
4 - We can't use this column directly in SQL based reporting purpose without appropriate parsing.

Happy Crunching!!