Posts Tagged ‘CMC’

Business Objects XI 3.X’s Server Intelligence Agent (SIA)

Business Objects XI 3.0 introduced us to an entirely new architectural concept called the Server Intelligence Agent (SIA). The SIA takes over Business Objects service/server management from the Central Configuration Manager of XI Release 2. When you start a SIA you can configure all, some, or none of the servers contained in/managed by the SIA to also be started. All BO servers in a SIA must belong to the same cluster. A BOXI SIA is much more than a server group, in fact, aside from also providing a grouping of BO servers in CMC it does not behave like a Server Group because you cannot schedule to it or any other such process assignment.

Sorting Through the Confusing Naming Conventions


Business Objects terminology can be a little confusing to those who equate “node” with “server”, “machine”, “host”, or “machine”. In the world of Business Objects XI 3.0 and 3.1 SIA and node have a 1-to-1 relationship. SIA and node even share the same name, so for all intents and purposes they are synonymous. Machine and host are also synonymous; however, in general “host” will be used in CMC. “Server” still refers to a single instance of the Business Objects service run on a host/machine which is a member of a SIA/node. Got it? Good.

Note of PronunciationBy the way, within SAP Business Objects it seems that most people say the word “see-ah” when they speak of Service Intelligence Agents or SIAs. Get used to it, people will pause to think when you say “S-I-A” spelled out (and we don’t want anyone pausing and thinking, do we?).

Managing Your SIA


The Server Intelligence Agent does not have its one graphical use interface (GUI), but parts of it can be managed through CCM, Central Management Console (CMC), and the utility called “ServerConfig” (Unix/Linux only, utility built in CCM for Windows). In the CMC, you should look under “Servers” and you will find the SIA called “Nodes” here.

Naming Your SIA


There is a character limit but I cannot tell you exactly what it is yet. The BO installer does have a 15 character limit, but this is a limit enforced by the installer only and you can always create longer named SIA later. You cannot use spaces, dashes, or periods in your SIAs name. You also cannot start the SIA with a number, but you can use numbers after the first character. I try to name my SIA by its main purpose and I include the short host name as well, such as “cms_myserver”. SIA names will default to the host name or even the host’s fully-qualified domain name.

Porting Your SIA


The default port for a SIA is 6410. In most cases you would want to use this one first. Then if you must add more SIA to the host/machine I suggest following some incremental like 6510, 6610, 6710 or perhaps 7410, 8410, 9410. It really will depend mostly on your hosts available ports. Sticking to tens will make it easier for you to remember in the future and easier for your successors to guess what is going on.

Can 2 SIA Run on the Same Host???


Yes, in fact, you can run many different SIA on the same host and each SIA can either point to the same cluster or possibly to an entirely different cluster. Think about this. It means that if you only had enough machines to stand up one environment, you could put 3 SIA on each machine and point each SIA to a different CMS database and Viola! you have 3 distinct BO XI 3.x environments running on the same hardware. How cool is that? Not so cool if your host doesn’t have enough RAM and CPU, but very cool otherwise.

SIA Warnings


Here are some things to look out for working with Server Intelligence Agents:

  • You cannot rename a SIA, but you can create a new one with the name you want, and delete the old one with the name you no longer want.
  • When you are installing the BO software for the first time be sure to give a name to the SIA that you want to stick with. If you later delete this SIA and have no SIA with this name present it will cause you trouble when patching the Business Objects Enterprise software. You can later workaround this trouble by updating your “ccm.config” file, but better to prevent than to cure.
  • It is always best to shutdown all BO servers/services/executables running on the machine on which you intend to setup a new SIA.
  • If you do not have a valid license key loaded (see CMC) then you cannot create more than one SIA in the cluster.
  • A SIA can be effectively reinitialized or even redirected to a new cluster if you create a new SIA on the same host with the same SIA name.
  • In order to completely delete a SIA from a cluster and from the host you must: (1) stop the SIA and all of its servers on the host, (2) have a SIA with the same name present on both host and CMS
  • The easiest way to clean-up orphaned/phantom SIA in the cluster (which have no host) is to add a new SIA to the cluster/CMS and select “noservers” as the kind of SIA you want to create
  • Although CMC permits you to manage the servers in your SIA without the SIA running, it is recommended that you do not attempt to add any servers to your SIA unless it is started. Cloning servers to a down SIA can really create a mess.
  • If you are creating a SIA that will have a CMS then you will need to enter in the database credentials for the CMS InfoStore database.
  • If you are create a SIA that does not include a CMS then you will need to have a CMS running in the cluster where you intend to create the SIA and you will need to be able to provide a BO Administrator user’s login information.
  • You cannot delete a SIA that is running. Shut it down completely, make sure all of its servers are stopped, and then try to delete it.
  • I do not recommend removing all SIA from a Business Objects host machine. If you want to delete all
  • If you use CCM or cmsdbsetup.sh (Linux/UNIX) to copy a CMS to a new database then it will copy all SIA. You will want to be very careful here and leave the source system down until you have deleted all of those copied SIA. How do you delete the SIA??? See above. ;-) Hint: if you need to delete a SIA from a CMS, you can create a noservers SIA of exactly the same on any host machine and that host machine will take over that SIA.

BOXI SIA, the One and Only


Most SAP Business Objects documentation states clearly that the acronym SIA stands for Server Intelligence Agent, but I have seen it also referred to as a “Software Intelligence Agent” in at least one BO document. For example, the Service Pack 3 release notes say, “After installing Service Pack 3 on a system where the Software Intelligence Agent (SIA) node has been removed…” I only mention this in hopes of clarifying any confusion. We can take away at least 3 points from this: (1) There is no such thing as a Software Intelligence Agent. (2) SAP Business Objects documentation is fallible (also it does omit a lot of things too, such as registry information and “Repo Scan”, but I digress). (3) It is not a good idea to delete all SIA from a host machine.


CMS Tuning: maxobjectsincache and MaximumObjectsToKeepInMemory

I think all Business Objects administrators and developers share at least one goal; they all want their XI system to perform at the best of its ability to realize its full potential. If you have this goal keep reading and please share any comments you might have as well.

Observing/Measuring Tuning Impacts

Tuning is a very delicate process. We all wish it were easier and more straightforward, but one truth stands in the way of this: the only way to know for certain the impact of any tuning change is to compare the system’s performance before and after the change. This fact present problems on live production systems because the use of the system constantly varies in load volume and the kind of work being done. Formal load testing attempts to overcome this problem using virtual users with tools such as Load Runner; however, while providing consistency these tools often fail to replicate real world usage. In the end, the best a Business Objects administrator can do is to run load tests and also observe live/organic system performance over time.

CMS Parameters Good For Everyone

The truth is that there are some Central Management Server (CMS) settings which given adequate hardware and database configurations, will almost always benefit all Business Objects XI systems. The following is the first one that comes to mind:

Playing With the CMS Cache

The cache is the first place you should focus. No CMS running on average server hardware will be harmed by pushing the memory cache parameter to the maximum and most systems will benefit. The only caveat here is that if your system has limited memory (you will know by watching RAM utilization) you may steal away your BOXI server’s scarce memory which is being used by the CMS to process its very MANY queries. Increasing the maximum number of objects allowed in the CMS memory cache will reduce the number of database calls required and according to the “BusinessObjects Enterprise Adminstrator’s Guide” for BOE XI 3.1 (page 656), this will greatly improve performance! There are two places to configure this setting:

Changing the Business Objects Registry Parameter: MaximumObjectsToKeepInMemory

The registry is one place where the change can be made cleanly and hidden. It is more difficult for someone to change this setting, but it is also more likely to be forgotten and taken for granted when it is placed in the registry. Also, keep in mind, if you recreate a Server Intelligence Agent (SIA) then all registry values will be reset to default settings.

The key to change is under the CMS’s instance and it is named “MaximumObjectsToKeepInMemory“. It is set to 40000 by default. The upper limit, which you should shoot for, is 100000. My server’s underutilized RAM and I wish it were higher.

The CMS Command Line parameter: maxobjectsincache

The other place to enable this parameter is in the CMS server’s command line. This is a less conspicuous place to make the change and I believe that any change made here overrides the corresponding registry parameter. The parameter is called “-maxobjectsincache #” (the admin guide shows it in all lower caps but letter case does not seem to matter). You invoke this by adding in CMC to the command line (or in XIR2 in CCM) the text ” -maxobjectsincache 100000″. Just be sure to place a space between this and any other parameters you might find there already.

Please Note: The command line parameter will override the corresponding registry setting.

Please share any related experiences with this parameter and any comments or questions you may have.

Recommend Reading: CMS Tuning: ndbqthreads or Number of Requested Database Connections


Hard to Find CMC Settings Revealed

I imagine that the Business Objects development team had some heated debates about where to put various settings within the CMC application. However, I suspect that when planning out Business Object XI 3.0 and 3.1 some of the decisions were made by a single sleepless product manager with a grudge. I offer the following points as evidence supporting this suspicion. Actually, all joking aside, I am mostly writing this article for my own future reference, because I know I will forget where these selected settings are located.

Set Default Viewer URL


Honestly I wasted hours trying to find this in BO XI 3.1, on two different occasions. There is something about this one that fools my mind into forgetting where it is. This setting is essential to any administrator that uses a distinct web server, a server alias, a load balancer, or any other configuration that would change the URL users use to access the system from what BO thought it to be during installation. This URL is primarily used by BO when it sends out links to documents (using OpenDocument URLs), such as a scheduled job sending an email to users with a link to the refreshed report instance which resides with the Business Objects XI system. When you alter it, you really only want to alter the server and domain name portion.

In XIR2 you can find the “Set Default Viewer URL” setting in:

CMC > Objects > Object Settings > Processing Settings
location of xi r2 set default viewer-url

In XI 3.0 and XI 3.1 you can find the “Set Default Viewer URL” setting in:

CMC > Applications > CMC > Processing Settings
location of xi 3.1 set default viewer url

Yes, there is quite a bit of difference in the location of those settings. With practice you may be able to remember both for a few weeks, if you are like me. I suggest bookmarking this page for future reference.

Setting Document Instance Limits


Instances if left unchecked can destroy your system. Seriously, all it takes is a lack of instance limits and a refresh every 5 minutes job. If that doesn’t scare you start thinking about the fact that there is no limiter for inbox instances. By default the scheduled job instance limits are not too bad, but you can make them more restrictive and you probably should before your users get used to your surprisingly generous limits. The only problem you face if finding where to make this setting:

In XIR2 you can find the “Delete excess instances” and “Delete instances after N days” settings in:

CMC > Settings > Limits

setting instance limits in boe xi r2, CMC > Settings > Limits

In XI 3.0 and XI 3.1 you can find the “Delete excess instances” and “Delete instances after N days” settings in:

CMC > Folders > (right-click top-level folder) > Limits
CMC > Personal Folders > (right-click top-level folder) > Limits
setting instance limits in BOE XI 3.1 through CMC

Final Words


If you want to share the location of any settings or configurations that you think are less than obvious please mention them in the comments and I will update the article with them as well to be sure that the search engines index them and help stop others developers from struggling because they can’t find the settings on their own.


Java App Server and CMS On Different Machines, Edit “hosts” File Now

If you have deployed your Business Objects XI Central Management Server(s) and your Java Web Application Servers are on the same single machine then this article does not apply to you. If your Java Web Application Server ever needs to run applications (such as InfoView or CMC) that will connect to any CMS that is not running on the Java Web Application Server’s machine then you and your system will benefit from reading this article.

The Java Implementation of DNS Look-up

I’ve been told by a few very knowledgeable folks that either Java as a technology or Business Objects Enterprise’s use of Java results in a situation where if the CMS is not hosted on the same machine as the the Java Application Server then the look-up of the IP address of the CMS machine(s) is very inefficient and is the cause of much lag in the case of such actions as logging in. For example, an InfoView log in action may take up to 10 seconds extra due to iterative inefficient resolution of the CMS machine’s IP address from the host name.

Building a Short-Cut

One way to put an end to this inefficiency is to place hard coded entries in the hosts file of the machine hosting the Java Application Server. If your server is configured to first check the hosts file before hitting the network’s DNS server then you will see a huge boost in the performance of log in actions. This is simply due to the fact that the poor implementation of DNS look-up that BO’s Java call is doing is bypassed by the hosts file entry for that host name. I have seen log in actions for InfoView and CMC reduced from 8 seconds to less than 1 second by this change alone.

Making the Change

This is one of those changes that won’t cost you much to test, but there is a price. The truth is that there is a very big issue with hard-coding a server name and IP address in your hosts file. On the very rare occasion that your server is assigned a different IP address your application will be broken until you update the hosts file accordingly.

To make the change you need only locate the machine’s hosts file. On Windows this is usually in “\WINDOWS\system32\drivers\etc” and on Linux it will be in the “/etc/” directory. Once you locate the file I suggest creating a backup of it first. New lines are added to the file merely by adding first the IP address, then at least one space, then the fully-qualified domain name, and optionally you can add at least one more space and put in the simple short name of the machine. For example:

12.232.131.121 myserver.mydomain.com myserver

I am not an expert on editing hosts files, but I can tell you that it is worth trying out on your system in you are running at least one CMS on a machine different from the one that is running your Java Web Application Server. Give it a try and report your results by leaving a comment please. To the best of my knowledge you don't even need to restart your deployment for the change to take effect. Just make the change and test the results. Good luck.


The Over-Credited Destination Job Server

Would you get a little upset if someone else kept taking all the credit for the work you do. Would you get down right furious when that person couldn’t fix any issues relating to their ill-earned reputation when a real problem came along and then you had to come along and save the day without even getting an ounce of credit. You would have to be a saint not to get upset about that, wouldn’t you, or perhaps you would just have to be a Business Objects Reporting/Adaptive Job Server?

The truth of that matter is that the Destination Job Server is not really at fault. He was born with a very bad and confusing name. Then over time IT folk got confused with the name, fixed an issue by configuring destinations on every server and then credited the “Destination Job Server” with being the key solution. While one can learn a lot from forum discussions, some BO forums are ripe with incorrect advice to fix job destination errors by configuring the Destination Job Server’s destinations. So this little article is written in hopes of dispelling a myth and giving credit were credit is due.

Destination Job Server, What Is It Good For?

First of all, let it be known that the Business Objects XI Destination Job Server is only responsible for handling the requests submitted through the “Send To” command within InfoView. Yes, that is right. When you are in InfoView and you select a document (check the box next to it) and then proceed to select to send it to an inbox, email, or other destination. In Business Objects XI InfoView it looks like this:
BO XI 3.1 InfoView 'Send To' Menu
When you use this InfoView “Send To” functionality you are in effect creating a job that only has the purpose of delivering a file to a destination. This, my friends, is what a Business Objects Enterprise XI Destination Job Server does; nothing more and nothing less.

So what about the “destination DLL disabled. CrystalEnterprise.Smtp:”error I get on my jobs server?

If you have this question still please read the above paragraph one more time and then read my previous article titled “Fixing the Business Objects XI “destination DLL disabled. CrystalEnterprise.Smtp:” Error” and now log in to CMC and configure your destination on all job servers in the cluster. Now you know, and knowing is half the battle.


Denying Security Access Explicitly in Business Objects XI 3.1

Maybe I am the only one, but I have struggled twice with this topic and so I thought that I would write this short article to make sure I remember the correct workflow and hopefully help someone else out too.

Sometimes You Just Want to Say “Stay Out”

There are times when you may want to refuse access to a specific user or user group. In my case, this is usually for a specific sub-group of users where the parent group is allowed access. To be honest, there are many reasons and some may be just to appease over-cautious administrators, customers, etc.

Most Restrictive Rights Always Take Precedence

Whatever the reason, the rule of Business Objects security is always that “the most restrictive rights always take precedence”. Knowing this, some choose to deny access explicitly, even though it was never granted in the first place, just to be sure that now and in the future that user/group does not get access.

Adding the Users or Groups

In our example we will use a folder, but this translates to any object, top-level rights, or even applications. Of course, you will want to log in to the Central Management Console (CMC) using an account that is a member of the “Administrators” group. Locate your object, we are using the “BOT Expenses” folder I created for this example. By default when I select the “User Security” option from the right-click drop-down menu on the folder I see this:
business-objects-xi-3.1-explicitly-denying-access-folder-user-security
By default my environment denies access to the “Everyone” group. This is done by editing the top-level folder security in advance.
Next we need to select “Add Principal” and choose the groups to whom we want to deny access.
business-objects-xi-3.1-explicitly-denying-access-add-principals

Assign Security – What? Why? I Want to Deny not Assign!

Click the “Add and Assign Security” button and you will see the following page:
business-objects-xi-3.1-explicitly-denying-access-assign-security
Now here is where I was getting confused. At first I was looking for an Access Level called “No Access”, this was the BO XI R2 in me. Then I thought well, maybe it is implicit here and all I have to do is “Save” and be done. I clicked “Apply” and the screen just re-drew itself, making no changes. Then I clicked “OK” and I saw this message:
business-objects-xi-3.1-explicitly-denying-access-warning-message
Click “OK” here just returned me to the screen depicted in the first screenshot above and erased all of the “principals”. Thank you CMC, I love you too.

So How Do You Make It Work?

OK, I will just tell you how to make it work. Return back to this screen:
business-objects-xi-3.1-explicitly-denying-access-assign-security
Now either click the “Remove Access” button or manually un-check the boxes next to “Inherit From Parent Folder” and “Inherit From Parent Group”. Either action results in the same result. Now click “OK” and you will still get this prompt:
business-objects-xi-3.1-explicitly-denying-access-warning-message
But this is “OK” this time… so click “OK”.

Successfully Explicitly Denying Security Access in Business Objects XI 3.1

Now you should see the groups that you select with the most desired access level of “No Access”.
business-objects-xi-3.1-explicitly-denying-access-successful

Congratulations, to you if you figured this out on your own and can remember this less-than-intuitive CMC security workflow. Once you look at the removing inheritance aspect it makes sense, but it still seems like there should have been an access level called “No Access”. Perhaps, an overly cautious Business Objects XI 3.1 administrator would create a custom access level that has everything explicitly denied and call this one “No Access”, unless Business Objects XI reserves that name in which case you could call it “No Access – Thanks to BusinessObjectsTips.com!”. That would be a great name for sure.

Please read Marshall’s important note below for additional explanation.


Fixing the Business Objects XI “destination DLL disabled. CrystalEnterprise.Smtp:” Error

One of the most helpful error messages (sad very sarcastically) in Business Objects XI is “destination DLL disabled. CrystalEnterprise.Smtp:”. You get this one usually after recently configuring a new job server or setting up your first scheduled job in a Business Objects XI environment. This error exists in XI R2 and it is definitely present in XI 3. So what does it mean and how do you fix it?

What is the “destination DLL disabled. CrystalEnterprise.Smtp:” Error?

This error essentially means that you do not have an SMTP/Email destination configured on the job server that your job or action is attempting to use. In some cases, your job may not even being trying to send email to anyone and you will still get this error if you have not configured an SMTP/Email destination for the job server being used. In XI R2 you need to be sure that the destination is enabled as well as configured. In XI 3 your will need to add it as it is not there by default and this will also enable it. Don’t forget the “Destination Job Server” as well as this one handles non-scheduled job, such as distributions straight from InfoView (I think). Also since jobs are assigned seemingly on a random basis, if your cluster has multiple job servers check them (or the specific job error) to pinpoint to trouble-maker.

How do I fix this error?

Easy, just configure an SMTP or Email destination on the job server (CMC > Servers > Job Server > Destinations). I highly recommend that you configure the SMTP/Email destination on all reporting job server (WebI, DeskI, Crystal), adaptive jobs servers (XI 3), and destination job servers. The only information that you must enter is domain, server name and port; however, your email admins might require the user id and password fields as well. Make certain that in XI R2 the destination is enabled too. This should stop the error; however, you might want to add more default information for the From/To email fields to prevent errors caused by users who will accept the defaults. I usually use the variable for the users email ID in both fields.


Cleanly Stopping and Starting Business Objects Servers

I really cannot explain why it is that I have NEVER seen any documentation that advises Business Objects XI administrators on how to stop and start Business Objects properly. For those of us running part of our business on BO XI we are very concerned about minimizing errors for users and scheduled jobs while we are restarting Business Objects.

The Cleanest Method to Stop a Business Objects Environment

I have discussed this topic with my senior engineers and the following is based on the input I received from them and from my own experience and knowledge. I will label optional steps that will make your stop and start as graceful as possible; these are optional, but they are the best method to follow if you have the time to do so. Also when following the steps make certain that the step is complete and the server is completely stopped/started before proceeding to the next step. Additionally if you have a clustered environment, and you should if at all possible, then you can stop all servers of the same kind in any order or even simultaneously.:

  1. Please first make note of any pre-existing disabled servers to be sure that you do not enable them mistakenly later on. Screenshots are useful and fast, just be sure to save them.
  2. Shutdown your web/application layer. This will stop your users from launching new jobs and from getting strange errors as you are in the midst of your shutdown. You could just disable a proxy server (if you use one to cut off the access, but (Graceful Option) you may want to completely flush the system by completely stopping the web server.
  3. (Graceful Option) Through the Central Management Console (CMC) or through the Central Configuration Manager (CCM) Disable all BO servers except for the CMS, Input FRS, Output FRS, and Destination servers.
  4. (Graceful Option) Wait as long as reasonable/acceptable or until all user sessions/requests have cleared the disabled servers before proceeding to the next step. Usually 30 to 60 minutes is sufficient for any valid threads being processed.
  5. Shutdown the Event Servers (use CCM or CMC). This would stop any related scheduled jobs from launching.
  6. Shutdown all Job Servers (WebI, DeskI, Program…).
  7. Shutdown the Destination Servers.
  8. Shutdown all Report Servers (WebI, DeskI, Crystal…).
  9. Shutdown any other non-CMS Servers that are still up and running.
  10. Shutdown CMS. CMS should always be last. This is essential and it will make your CMS shutdown go much faster and more smoothly. It may also help reveal any problems that your CMS may be having (for example, if it won’t shutdown you’ll know it is not because of any other lingering servers in the cluster).
  11. With the CMS completely shutdown you are official and completely down.

The Cleanest Method to Start a Business Objects Environment

It is assumed that EVERYTHING is down prior to beginning these steps. If your environment is only partially down we strongly recommend that you first shut it down completely before attempting a start/restart. You want to have a clean environment so do yourself and your users this favor. When starting groups of the same kind of server you can start them one by one or simultaneously, jsut be sure that all are started before proceeding to the next step. (Graceful Option) If you disabled any servers prior to the shutdown (as part of a graceful shutdown) then you should enable them immediately after they have been started:

  1. Start the CMS servers. This will take a little while depending mostly on the number of objects in your environment.
  2. Start Destination Servers, Input FRS, and Output FRS.
  3. Start Event Servers. Also as a side note, please be aware that Event Servers must always be restarted following the restart of any CMS in the cluster.
  4. Start all Report Servers.
  5. Start all Job Servers.
  6. Start any other servers that have not yet been started.
  7. Start your web/application layer.
  8. The Value of the (Graceful Stop/Start Method)

    Disabling Business Objects XI servers allows the servers to retain and complete their current threads/work, but it stops it from accepting any new work. Nevertheless, this requires caution. If users retain access to the environment (web and application layer are up) while you are disabling servers and you disable ALL servers, or most of them to a point below capacity demands, then you will cause errors for users! Therefore, if the users do retain access to the environment disabling servers would only be done partially to the collection of similar servers (with reason). Also do not forget to enable the servers after the servers are restarted!!!

    Please also see the article “The Best Way to Stop a Business Objects Server“.


Sizing Limits to Web Intelligence Report Server Maximum Simultaneous Connections

In Business Objects XI R2 newly created Web Intelligence Report Servers default to 50 “Maximum Simultaneous Connections” (editable in the Central Management Console, or CMC). In Business Objects XI 3.X the “Maximum Simultaneous Connections” setting is defaulted to 100! Can we read anything in to these changes in default settings? Do the default settings mean anything at all with regards to the settings you should have on your system?

Sizing Limits to Maximum Simultaneous Connections

General consensus of our sources tell us that XI 3.X is better coded and can handle more connections than XIR2, with regards to WebI Report Servers. Nevertheless, it would be quite a leap to say that all other things as equal as possible that XI 3.X WebI Report Servers can handle twice as much traffic. Seriously, don’t count on it.

I feel I should add personal experience and best practice here. I see the default setting for “Maximum Simultaneous Connections” on the WebI Report Server as a maximum setting. I have personally never exceeded it nor witness it exceeded by anyone. It is generally held that if you need more Simultaneous Connections then you ought to add another WebI Report Server to your environment. Of course, keep in mind that SAP Business Objects’ general guideline is that you have no more than 1 Web Intelligence Report Server per available CPU core (for example, a server with 4 quad-core CPUs has 16 CPU cores); so there is a limit there too.

Real-World Web Intelligence Report Server Sizing

A production system will generally run better having more Web Intelligence Report Servers with lower Maximum Simultaneous Connections. For example, a server with 4 dual-core CPUs would run better having 8 WebI Rpt Servers each set at 30 Maximum Simultaneous Connections than it would having 4 WebI Rpt Servers each set at 60 Maximum Simultaneous Connections in CMC. In the real-world tuning and balancing usually are based on observed performance within configuration guidelines.

To get your sizing in the right place you should know what you maximum concurrent users are (logged-in users plus concurrent schedule jobs). This number is essentially how many Maximum Simultaneous Connections you will need. So let’s say you never have more than 100 concurrent users, but you can at those peak times also have 25 scheduled jobs. Keep in mind that most users will only do one process at a time, but some like me will be refreshing one report while editing another simultaneously. A scheduled job will always only be one connection. So you can safely say that you require only 150 simultaneous connections (with some wiggle room).

Now your server had only 4 CPU cores in it. So this one is easy 150 divided by 4 will give you 37.5. Round that up, because I suggest you have at least 150 and that you keep the same number on each WebI Report Server. So you can set each one’s “Maximum Simultaneous Connections” to 38 using the CMC. In XIR2 this might be pushing the limits, but in Business Objects XI 3.X this should be a comfortable setting.


The Little Known Business Objects Program Object

Most people are only familiar with the various reporting tools in Business Objects. Of course, these are the reasons organizations set up a Business Objects instance in the first place. However, Business Objects XI has managed to include some additional functionality that goes beyond reporting. For example, BOXI can be used to publish “agnostic” documents, such as PDF, Word, Excel, or PowerPoint. In particular, nevertheless, I would like to discuss the unique functionality of the Business Objects Program Object.

A Business Objects Program Object can be used to execute a batch file, a shell script, or a binary executable. It can also run Java, JavaScript, and VBScript. Therefore, they is virtually no limit to what you can do with a BO Program Object, except for your imagination and standards. Once the association is made to the program object standard objects rights can be applied and most importantly you can schedule the object (which is where the power is).

There are a few caveats that you need to be aware of. The program will require a “Logon As” account that must have interactive login rights to the server on which the Program Job Server runs. Also, I should mention that you need a Program Job Server configured for your environment. When you create a program you are not creating a pointer to your script, but rather you are uploading your script/program to the CMS InfoStore, just like you would an Excel file if you were to load it to your Business Objects repository. This means that if you later alter the script you used to source the program object then you must create a replacement object and re-source the script.

Another couple points, when I create program objects I like to log in to CMC while logged in to the server since often I have created a driving batch file that calls other batch files on the server. Oh, and that brings up the very last point. If you are running multiple Program Job Servers and your script calls other scripts on the server you will need to place identical copies of the called scripts in the exact same path on all servers running a Program Job Server (anything less would be easier, but it would cause failures).

The following are some simple steps to create a functioning program object. They are basic, but they should get you on your way to lots of programmatic trouble. The grouping of the step correspond to the screenshots above. Click on each thumbnail to view the full-size image; I recommend opening them in another browser window (hint, right click the thumbnail image and select this option).

Step and Screenshot #1
a) In CMC, go to Objects and click the “New Object” button
b) Click on “Program” in the left-hand menu
c) Enter in the location of the program object source, the path needs to be local to the client you are using. You will need to create a test script to run if you don’t already have something in mind.
d) Select the “Program Type”
e) Select the target folder and/or categories
f) Click “Submit”

Step and Screenshot #2
a) You may edit the program object name which gets generated from the source file you loaded. The name can be anything.
b) Add other properties if desired. A good description is always helpful to others and your future self.
c) If you made changes, click “Update”.

Step and Screenshot #3
a) Click on the “Process” tab and the “Logon” sub-tab.
b) Put the account information for an account with log on rights, any rights less than interactive logon will result in a failed execution.
c) Click “Update” when done

You are welcome to experiment with the other tabs and sub-tabs, but please share you findings if you do. :-)