Wednesday, November 30, 2011

A note on CUID



What are CUID? 


CUID- Cluster Unique Identifier 


The CUID is a key to identify the Universe or report within the same cluster, may be in different deployment environment(e.g. development, staging and production). It is a 24 bit key which automatically generated when first export to repository is done. It is the single identification of the reports or the Universe which do the all handshake for the movement of the data through all BO servers ( Job server, Cache server, processing server).


Now what is cluster in sense of BO? 


According to the Admin guide A cluster consists of two or more CMS servers working together against a common CMS system database. If a machine that is running one CMS fails, a machine with another CMS will continue to service BusinessObjects Enterprise requests. This "high availability" support helps to ensure that BusinessObjects Enterprise users can still access information when there is an equipment failure.
As an Example there are three environment in a BO implementation Development , Staging and Production. They have their own CMS server. But to work effectively it bundles into same cluster and controlled by one of the three CMS among them or Create another CMS to to control the cluster.


Where we can find this? 
You can find this by opening the Universe or Report properties in CMC. 





What is actually affected if CUID is changed?


All the reports are connected to the Universe by the CUID. If the CUID got changed all the reports will throw “Universe Not Found” error. 
We need to re-point the report to the new universe. 


In What situation it got changed? 


I have not all the scenario but I found the below scenario: 




  • Import a universe. 
  • Save it in different file name. 
  • Export it in same path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • Import a universe. 
  • Save it in same file name. 
  • Change the Universe name from properties
  • Export it in same path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • Import and save a universe. 
  • Export it in different path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • Import and save a universe. 
  • Change the connection 
  • Export it in same path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • Import and save a universe. 
  • Change the connection 
  • Export it in same path





If mistakenly it got changed then what is the recovery method without changing all the report?


1. Open the backup copy of the universe 
2. Name it the same as the original (the one all the reports point to) 
3. Export the universe to the same folder the original resides in 
4. You will be asked if you want to copy/move the universe to the new location, select Copy 
5. You will be told that a universe with that name already exists, do you want to overwrite it, select Yes 

Some other points


1. CUID never gets changed when importing from one CMS to other using LCM or Import Wizard. 
2. CUID is unique but ID which comes along with may be multiple for a single universe. ID is not used except auditing.

View or View on Demand




When to give access level View or View on Demand?




View access level


User’s benefit

  1. User can see the html report page which was saved when last refreshed.
  2. They don’t have the refresh report option enable.
  3. They can do all the report operation without touching the database.

System’s benefit

  1. When user refreshes the report the generated SQL query directly goes to database and ran it in database server. If they get the view access only they the system overload will be less as there will not be simultaneous run (same report in same point-of-time with multiple login) for the same query for different users.
  2. It reduces number of hit to database server.
  3. It reduces the network traffic.
  4. Report instance which a user is using having full capability ( like drill down , snapshot… ) but those activity will not send any SQL to Database server. It will go to the report server to get the copy of data saved in last refresh.
  5. There will be no chance of atomicity problem if we scheduled the report refresh after the regular database refresh.

Developer’s burden
Developers need to do the following:

  1. Either they need to schedule all the reports with proper prompt value so the reports can refresh automatically according to the prompt and return the proper data.
  2. Or they have to manually refresh the reports before the users’ starts using everyday. It may be daily, weekly, monthly, and yearly, quarterly or user assigned.





View On Demand access level
User’s benefit

  1. Users will get access to the real-time data.
  2. They can refresh their own report by changing the condition.
  3. Users will get the accurate data till the second of their refreshing time.
  4. Response time may be decreased but the accuracy of data is more perfect.
  5. User can change the condition of the report.
  6. If the reports are scheduled then the user have both choice to see the refreshed report or refresh it again to see the last minute update.

System’s benefit or Burden:

  1. Number of database server hit will be more.
  2. In time of yearly or quaterly closing the network traffic will be most.
  3. The same query will run thousand times for different users.

Developer’s burden or benefit:

  1. Need to tune the database and do the performance testing continuous.
  2. Do a perfect load balancing.
  3. No need to scheduled the reports or no need to refreshing and saving the reports. 


Tuesday, November 22, 2011

Default Time stamp problem.





Problem: 
User required an object called “Today” which contains todays date. But they don’t want the default time stamp added as a suffix of that. They want onlt “11/22/2011” in place of “11/22/2011 11:07:17 AM”. BO Does not provide a direct option for removing the attached timestamp it can be achieved using following step. 

Solution: 

1. Create an date object name “Today” and select “sysdate” for this object. 
2. Create another character object “Today 1” and select “to_char(trunc(@Select(<Class Name>\Today)),'mm/dd/yyyy')” 
3. Copy the List Name from the Properties tab. 
4. Open the “Today” objects property tab and change the List name as the List name of “Today 1”’ List name.
5. Now see the Display value of “Today” 

6. Now delete the “Today 1” object. 
7. Export the Universe.


Partial result





Problem:
While Refreshing a report in Business Objects returned a warning “Partial Results”. Also, some of the data which was required in the report was missing or not being fetched.
Analysis:
Extract the same SQL generated by the report and run it in the same database on which the Universe is built. Count the rows of data.

1) Open the universe
2) Click on File, then Parameters
3) Click on the Controls Tab
4) Check the “Limit size of the result to” text box.

If the number of rows set less than the number of rows returns the SQL query then it throws partial and random records.

Solution:
1.      Change the number of rows in the Designer more than the query returned
2.      Uncheck the checkbox of “Limit size of the result to”

Risk & Best Practices:

1.      Universe is normally built for many reports so before changing the number of rows it is better to discuss with Business that what extent they want the data and change upto that number of rows. In future if another report is giving the same partial result error fix the report not the Universe as the report is extreacting more than the data needed.
2.      The limit should be a realistic number 100,000 record is good for any reporting environment. More than that will effect system performance.
3.      If you uncheck the checkbox: The limit should be set to the maximum data retrieved by Oracle then there is a risk that Cartesian products would be allowed to run and return millions of rows.

Monday, November 21, 2011

BI 4.0 some good tutorial


MultiSource Universe (Part1) - SAP Business Objects 4.0 - Information Design Tool
http://www.youtube.com/watch?v=4zeB9A0gJEg

MultiSource Universe (Part 2) - SAP Business Objects 4.0 Information Design Tool
http://www.youtube.com/watch?v=jtiyBTgnXmQ

How to create a universe (In Local Folder) - SAP Business Objects XI 4.0 - Information Design Tool
http://www.youtube.com/watch?v=pgzzgMJfaLs

Row Level Security in SAP Business Objects by Creating a Data Security Profile
http://www.youtube.com/watch?v=6yM0OLK6QlI

Change Data Source Web Intelligence 4.0
http://www.youtube.com/watch?v=BdjiLu977Hg

SAP Business Objects Explorer
http://www.youtube.com/watch?v=qpQ2m2rwU40

Business Objects Universe
http://www.youtube.com/watch?v=p6iBntoYGOQ

Web Intelligence 4.0 Tutorial
http://www.youtube.com/watch?v=sD_MFrSOZAs

Cascading List of Values (associating to Parameters in the Business Layer)
http://www.youtube.com/watch?v=_1Qyb8X3ZeQ

Cascading LOV (associating to Dimension Objects in the Business Layer)
http://www.youtube.com/watch?v=7i4T0NgGVAg

LOV in Business Objects (based on Custom Hierarchy)
http://www.youtube.com/watch?v=8jYuMG5IG8U

SAP HANA Modeling
http://www.youtube.com/watch?v=9hM83qw9tYs

Score Cards on iPad - SAP Business Objects Mobile
http://www.youtube.com/watch?v=rfqawiAwqk4

Parameters and List of Values in SAP Business Objects 4.0
http://www.youtube.com/watch?v=FuDD-48pSCc

MultiSource Universe (Part1) - SAP Business Objects 4.0 - Information Design Tool
http://www.youtube.com/watch?v=4zeB9A0gJEg

MultiSource Universe (Part 2) - SAP Business Objects 4.0 Information Design Tool
http://www.youtube.com/watch?v=jtiyBTgnXmQ

Thursday, October 27, 2011

Universe loading very slow


Problem description
We are having 10000 objects in Universe. When we import the Universe in Universe designer, in some machine it is opening in rapid speed.
But in other machine it is taking a lots of time. Some time it shows not responding in task manager. But open after 15 minutes

Answer:
This is because in "Tools>Option> Graphics " tab the "underline Keys" is checked.

It actually check all the tables added in the Universe.
If you remove the check it will first open the universe for you without checking all the tables. This is not a good practise but to handle an universe like 10000 object it is almost mandatory

Monday, October 10, 2011

Universe restriction Priority


Problem:
Explain the priority of restriction implemented in Universe.

Answer:
According to my understanding and running the same problem in our universe the solution is below:

If you go to "Set group priority" window after clicking on Priority button in "Manage Access Restriction" you can see the below comments...
"You can specify which groups have the highest priority for access restrictions. If an user is assigned conflicting restrictions on different parent groups, the restriction on the group with the highest priority will take precedence."

Describing the scenario:

Group1------------>Restriction 1-----------> Priority 1(Higest Priority Lowest Level)
Group2------------>Restriction 2-----------> Priority 2
Group3------------>Restriction 3-----------> Priority 3
Group4------------>Restriction 4-----------> Priority 4(Lowest Priority Highest Level)

Restriction 1----> Can see A1 object but can't see A3 object
Restriction 2----> Can see A2 object but can't see A4 object
Restriction 3----> Can see A3 object but can't see A2 object
Restriction 4----> Can see A4 object but can't see A1 object

User A is present in Group 1 and Group 2
User B is present in Group 3 and Group 4
User C is present in all groups
Now
A can see --- > A1, A2
B can see  ---> A3, A4
C can see ---> A1, A2 ( But can't see A3, A4 as it is already restricted by Restriction 1 & Restriction 2)


Correct me if I am wrong....

Thursday, October 6, 2011

Dynamically change Universe joins


How to Dynamically change the universe joins based on user response (i.e. using @prompt function)?

Create the universe code like that.

('I' = @Prompt('In or Out Worker?:','A',{'I','E'} ,Mono,Constrained,persistent,{'I'})
AND
ABC.XYZ=PQR.XYZ
)
OR
( 'I' <> @Prompt('In or Out Worker?:','A',{'I','E'} ,Mono,Constrained,persistent,{'I'})
AND
ABC.XYZ!=PQR.XYZ
)

Class level security in Universe


Question:
Is it possible to set security at the class level within a universe?
Like one user group will see the data without any condition and other user group will see the same class where the xyz column of ABC table is equal to "Y"?

Answer:
It is possible to set a restriction on a class but with a twist. You need to create the copy of same class and save it to different name.
I am recreating the scenario.

Group A1 will see "Corporate" class data without any condition.
Group A2 will see "Corporate (A2) " class data with this condition ABC.XYZ="Y"

Steps:
  1. Copy the Corporte classs and paste under same hierarchy.
  2. Rename it as Corporate (A2).
  3. Create a condition object and set the properties like below.



  1. Then go to Tools>Manage Security>Manage Access Restriction.
  2. Create two new restriction (e.g Corporate Restriction, Corporate (A2) Restriction)
  3.  Go to “Object” tab in both restriction and add like below
    1. In Corporate Restriction add “Corporate (A2)
    2. In Corporate (A2) Restriction add “Corporate
  4. Map to A1 and A2 group
  5. Save and Export the Universe
  6. Check by login as A1 group and A2 Group user

Now A1 Group can see only Corporate class and A2 Group will see Corporate A2 class.
When they pull the object inside it the data is restricted according to the condition.



Wednesday, September 14, 2011

A good tutorial for usig business objects web intelligence




http://www.youtube.com/user/RimGeurts#p/u/9/UnXeWHrzItE
http://www.youtube.com/user/RimGeurts#p/u/8/_Q4riQum72o
http://www.youtube.com/user/RimGeurts#p/u/7/vOSUrFAyJ24
http://www.youtube.com/user/RimGeurts#p/u/6/X6YXDtLIUWo
http://www.youtube.com/user/RimGeurts#p/u/5/ZnIu59jrnVY
http://www.youtube.com/user/RimGeurts#p/u/4/RXYMrV04rc4
http://www.youtube.com/user/RimGeurts#p/u/3/H0w_ZRpPK8k
http://www.youtube.com/user/RimGeurts#p/u/2/hxmWS2yhLhE
http://www.youtube.com/user/RimGeurts#p/u/1/gssHNJdjUeg
http://www.youtube.com/user/RimGeurts#p/u/0/735v9jL6mus