Archive for the ‘Guru Tips’ Category


Learn ‘Big Data Visualization Storyboarding and Wireframing Techniques’ like never before!

As you all know, we live in an era where ‘Big Data’ has indeed become an important core component in every industry. When data is used to its full potential, companies can maximize their marketability, generate more revenue, and even create disruptive innovation. However, to be effective, it is critical that the data be presented in a manner that users can easily analyze and interpret. Data visualization storyboarding and wireframing techniques are just some of the key strategies needed to start building effective visuals for your organization.

Join me this Thursday, June 26th at 12 pm EST, for BI Dashboard Mastery 2.0 and learn how to jumpstart that process, as I will teach the following key techniques:

  • The 2 most important steps you need to take to start your visual storytelling journey today. I’ll share two things that you can start doing immediately to jumpstart your data viz journey! It’s easier than you think :-)
  • The 4 most critical sections that all successful BI Storyboards must have, but 80% of users don’t even know exist! Yes that is correct! You will learn about the 4 key areas that we include on all 400+ dashboards that we have built, and how to start using them!
  • Which free tool you should be using to build your dashboard wireframe to make the process painless! There are over 40 in the market… we will show you our top 3. Remove the guesswork!
  • How to easily create dashboard wireframes that will WOW your users and gain sign off 80% faster. No more struggling through design discussions. No need for a designer. This one tip alone we’re told is worth the entire course!


You get the chance to instantly download some BIDF wireframe templates to use immediately!

Webinar information:

  • When: Thursday, June 26, 2014
  • Time: 9am PST / 12pm EST / 5pm CET
  • Register now:

Our last two BI Dashboard Mastery workshops had well over 1200 registrants, so don’t wait last minute to claim your spot!

BIDF Webinar #2 Click here now

Mico Yuk, Founder, | Author, Data Visualization for Dummies (Wiley, 2013) | BI Coach | Global Keynote Speaker| Top Analytics Blogger (2012) | Co-Founder, ‘Xcelsius Gurus’ Network & To find out more about Mico, visit


Dynamic status update of Check Box components in Xcelsius: Part 4/4

Not all check boxes are created equal

This post continues an examination of the methods to achieve dynamic update of Xcelsius Check Box component’s statuses that started in the previous parts of this series: Part 1, Part 2, and Part 3.

One of the interfaces that require this functionality is similar to the Row Selectability section on the Common tab of the Behavior ribbon in the Spreadsheet Table component properties. It is also used in Excel filters (“(Select All)” option) and in Tableau (“(All)” option), and in many other displays that include grouped check boxes.

This design consists of the multiple dependent check boxes that can be checked/unchecked selectively by a user, but also are governed by the so-called “master” check box. The status change of the master check box correspondingly affects the statuses of all of the other check boxes in the group.

To reproduce it in Xcelsius, I’ll use the model similar to the one used in the Part 3 with a line chart of traffic trends by geographic region and the check boxes representing these regions. Display status of each chart series depends on the checked/unchecked status of the corresponding check box. What the user sees as a check box is a push button component placed on top of two check box components. The push button has a transparent background. One of the checkboxes is set to be checked and the other one is unchecked. Their dynamic visibility is based on the status of selection (see details in Part 1 and Part 2). The challenging design difference in this model is that the component responsible for the Select All/None functionality (master control) is not a button as in Part 3, but a check box itself, at least in a visual capacity, and its functionality should create a corresponding user experience.

If the user unchecks any dependent check box, the master check box should be unchecked as well. If all of the check boxes are checked, the master check box should also become checked. We can’t get such functionality in Xcelsius models out of the box. But there is a workaround that I’m going to share with you.

On the figure below you can see the components included in the model.

To show what happens behind the screen at a run time I added a Spreadsheet Table component. It is based on the range C1:E6, which consists of the calculated statuses of selection and visibility. The next two figures show how the spreadsheet is set up.

Chart series are linked to the Calculated Data range (H2:K6). Formulae in that range use the REPT worksheet function that returns values from the Raw Data range (H8:K12) if corresponding display status in the range (D3:D6) is 1 and an empty string if it is 0.

Each click on any dependent checkbox (which is in fact on a transparent push button), copies the values (1 or 0) from the corresponding row in the range C3:C6 into the cell in the range D3:D6. Then, the formula in C3:C6 recalculates the inverted value in the preparation for the next click.

The Dynamic Visibility Status properties of the stacked check boxes representing the master check box are linked to the cell E2 (shaded in green on a spreadsheet).

The formula in the cell E2 ( =MIN($D$3:$D$6) ) calculates the lowest out of all dependent check boxes’ statuses.

When a user clicks on what is shown as the master check box and labeled as (All), he triggers an overlaid push button. It results in an insertion of values from the source range E3:E6 into the destination range D3:D6.

Formulae in E3:E6 range (1-$E$2) return inverted E2 value facilitating 1 and 0 toggling of dynamic visibility statuses of the all dependent check boxes and then, closing the loop, affects checked/unchecked status of the master check box.

This post concludes the series about dynamic status update of Check Box components in SAP BusinessObjects Dashboard (Xcelsius). With one of the next releases of the product, we might get the Check Box component’s behavior changed (at least as an option) to be similar to Excel’s Check Box control, and this series of posts will become obsolete. Until then, we can use the methods explained here to achieve the functionality, as of today, not supported in Xcelsius out of the box.

Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.

P.S. The BI Dashboard Formula is officially LIVE NOW! Read our Members’ Testimonials and see why we received a 98% approval rating! Register before November 7th and take 10% off with coupon code: MicoBuddy10.


Dynamic status update of Check Box components in Xcelsius: Part 3/4

Now you see it, Now you dont!

This post demonstrates how to apply the ideas presented in Dynamic status update of Check Box components: Part2 to the dynamic selection of chart series.

One of the features introduced in Xcelsius 2008 SP3 was a dynamic series selection in charts.This long awaited addition addresses an old request for the ability to hide/show a chart series at run-time.

Now, all we need to do to set it up is to go to Appearance section in the chart properties, enable legend on theLayout tab, check Enable Hide/Show chart Series at Run-Time check box and accept the default value of Check Box in the Interaction combo box. At run time, next to the corresponding labels in the chart legend, we’ll get the check boxes that govern the display status of the chart series as shown in the following example of charting traffic trends by geo region.

This approach is quick and intuitive. It’s a big step forward and in many cases will serve its purpose. But there is still room for improvement. One of the limitations is an inability to reset all check boxes (or all in a group) at once. So, the traditional solution for toggling a display of chart series based on Check Box components and Excel logic still takes its place and can be enhanced with the methods explained in details in (Dynamic status update of Check Box components: Part2). The following model shows how to apply such a technique to the previous Hide/Show chart Series example.

All custom push buttons shown above the chart use the Status range (cells H3:H6) as the destination. The raw data is in the range P3:U6.

The range J2:N6 is the data source for the chart. Formulae in the range J2:N6 calculate values for the chart series. When the values in the Status range are 0s, the formulae in the corresponding rows in the range J2:N6 return empty strings and series that are based on those rows are not displayed. And when the values in the Status range are 1s, the formulae in the range J2:N6 return the raw data values and the display status of the chart series gets toggled.

Custom push buttons are created as described in Customizing a Push Button component in Xcelsius.

The buttons support All, Invert and None types of selection. The buttons serve to select only series in the corresponding groups (USA and Canada in this example). The check boxes are also designed as custom push buttons and used for changing the display status of the chart series for individual regions (e.g. just Portland or Seattle and Portland).

Select None functionally is just one click less than a combination of All and Invert selections. So, depending on our intentions, we can save an extra click for the user by adding this button, or exclude it from the design to save some space on the canvas and deal with fewer components. Yet another option, as a compromise between two, is to stack the All and None buttons and toggle their dynamic visibility.

With such an implementation, after clicking the All button it will become invisible, and the None button will be displayed instead on the same spot. In turn, clicking the None button will hide it and make All button available for the next logical action. Using this option might need some integration with the Invert button functionality.

The example in this post demonstrates one of the practical applications of the dynamic check box status update in Xcelsius and can be extended to the designs that support more complex rules for simultaneous selections of logically grouped items.

Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.


Webinar in 24 hrs: Xcelsius Dashboard Scoping

Join Mico tomorrow for yet another FREE webinar that relates to her new BI Dashboard Formula training series.

Due to a number of requests to have “a little more time to gain approval”, we have re-opened the registration page until Friday, August 31st, 2012.  As the class is scheduled to start on September 6th, this will be your absolute LAST OPPORTUNITY to REGISTER for the BI Dashboard Formula.

While presented at a few conferences, Mico has never focused on this topic  in such detail before as it’s an excerpt from the BIDF teachings.  Expect to leave this webinar seeing BI Dashboard Scoping in a new light.  In order to successfully complete your dashboard scoping you must…

Gather three types of requirements:

1. DATA requirements – Capture all the details about the KPI’s and metrics such as the definition, how to calculate, the data sourc(s), any business rules and much more
2. FUNCTIONAL requirements – Learn how your business user expects to ‘use’ the dashboard
3. DESIGN requirements – Define the look and feel of the dashboard

Here are the details to register:

  1. WHERE – Click here to Register (or copy and paste into browser:
  2. WHEN – Tomorrow (08/21/2012) at 1pm EST / 10am PST sharp
  3. NOTE – If you cannot attend the live webinar be sure to register to receive the link to the webinar recording
  4. WHAT - Mico will cover about 40% of  Module 3 of the BI Dashboard Formula Training Series, the most popular teaching of the series and will describe how to use the BI Dashboard Formula Blueprint (template)

Hope you can join us!

Soo Tang Yuk (@sootangyuk) is the ‘Xcelsius Gurus Network” community manager and evangelist. To find out more, please visit her about me page.


Dynamic status update of Check Box components in Xcelsius: Part 2/4

Select All or Select None

The ability to update the status of multiple logically related Check Box components with one click is a common request when using SAP BusinessObjects Dashboards (Xcelsius).

Another frequently requested feature is the “Invert Selection” functionality, when on “one click” a user can deselect (uncheck) all of the currently selected items and select (check) those, which were not in the original selection.

The benefits of having these features might not be obvious while dealing with just 3-4 check boxes. However, when we have more of them and try to check only the few that we are interested in, such functionality becomes highly desirable.

The challenge here is making the Check Box component be checked or unchecked dynamically. In Part 1 of this series I demonstrated how to accomplish a dynamic status update (e.g. Reset) of a single Check Box component. This post is about applying that approach to multiple Check Box components.

Let’s build a model with multiple check boxes that represent geographical regions.

We want to support a selective update of individual check boxes and also a simultaneous update of all of them or just those that belong to a predefined group.

1. Set up a spreadsheet as shown in the figure below. For this example, the region “East” is associated with the group 2 and the other ones with the group 1 (see column H). These group names have no special meaning and could be replaced with other identifiers, if it’s also reflected in the dependent formulae.

2. Add to a canvas four sets of components, each of which represents the region to be selected at run time and consists of two check boxes (checked and unchecked), a label and a push button, as shown in a figure above.

3. Link Label components to the cells with the region names in the range I2:I5.

4. Bind the push buttons’ Source Data properties to the cells in column A and the Destination properties to the cells in the column G in the same row.

5. Make the push buttons transparent as explained in my Custom Push Buttons post.

6. Set the Item property of one of the check boxes in each set as a Checked and the other one as Unchecked. The Item property is located on the Common tab of the Behavior section.

7. Configure Dynamic Visibility for each check box in a set by linking their Status properties to the cells in the Status range G2:G5 (shaded in yellow). Set the Key property for the checked check boxes to 1 and to 0 for the unchecked ones.

8. Stack check boxes in each set and place the corresponding transparent push buttons on top.

9. Resize and align Label components with the check boxes.

10. Add to the model five new push buttons and label them as All, None, Invert, Group1 and Group2.

11. All push buttons will use the cells in the Status range (G2:G5) as a Destination property.

The Push Button component fires only on a click and stays neutral upon dashboard load. It allows us to use multiple push buttons pointing to the same destination. The ordinal positions of the components in the Object Browser do not impact the result.

12. Button All uses as a Data Source the range B2:B5 with values 1 in all cells.

Data Source property of the button None is bound to the range C2:C5 with values 0 in all cells.

Invert button points Data Source property to the range A2: A5 with the formula =1-G2 in the cell A2 copied down in other cells in the range.

Buttons Group1 and Group2 illustrate the selection that is based on a custom logic. They use as the Data Sources the ranges D2:D5 and E2:E5 correspondingly. The formula in D2 is =SIGN(H2=1) and the formula in E2 is =SIGN(H2=2). They are copied down the ranges and flagging regions in the Group1 and Group2.

13. For the visualization of underlying run time changes, add a Spreadsheet Table component and bind its Display Data property to the spreadsheet range shown in the figure above.

14. Open a Preview. As depicted in the following figures, we can flip the values in the cells in the Status range by selectively checking/unchecking check boxes and also can simultaneously check/uncheck check boxes in the various logical groups using the push buttons.

One of the practical applications of this functionality is a toggling of the display of a chart series based on the statuses of the corresponding check boxes. I will show how it can be implemented in one of the next posts.

Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.


Dynamic status update of Check Box components in Xcelsius: Part 1/4

Part 1: To Check or not to Check

One of the most common requests when using SAP BusinessObjects Dashboards (Xcelsius) is the ability to selectively reset Selector components back to their original state. Unlike many other selectors, the task isn’t as easy to achieve with the Check Box component. We can’t dynamically update its Checked/Unchecked status because the changes of the value in the cell that the component is bound to don’t affect the component itself. Lack of this functionality also makes it difficult to support updating the statuses of multiple check boxes at once. This post is the first of a series in which I’m going to share my solution to that challenge and examine some of its practical applications.

Xcelsius Check Box component looks similar to its Excel counterpart, but acts differently. In Excel, the connection between a Check Box control and its linked cell works both ways, as implied by the control’s property: Cell Link. Updating the Check Box status changes the value in the linked cell and vice versa. So in Excel, we can dynamically change a linked cell value and see immediate change in the control’s status. That’s not the case with the Xcelsius Check Box component. The hint is in the component’s corresponding property name: Destination. It only assigns the value to the target cell. If that cell is updated by other components, the Check Box component is not notified about the change, and its status stays the same.

Conduct a simple test and compare the results using the same scenario in Excel and Xcelsius:

1. Add a Check Box and a Spin Button control from the Excel’s Form Controls section to a worksheet and link both of them to the cell C2.

2. Set the spin button values range from 0 to 1.

3. When the check box is checked / unchecked the cell gets TRUE / FALSE values.

When the spin button is clicked Up or Down it changes values in the linked cell to 1 or 0 and at the same time the check box’s status gets toggled as well.

4. Now, let’s see what happens in Xcelsius.

Add Check Box, Spinner and Single Value components to a canvas.

5. Link all of the components to the cell C2 and open a Preview.

6. When the check box is checked or unchecked the destination cell gets values of 1 or 0.

But when the spinner updates the value in that cell the check box’s status doesn’t change.

This means that in the current version of Xcelsius there is no built-in functionality to dynamically toggle the Checked/Unchecked status of the Check Box component.

Luckily, there is a work around. Unlike Excel Form Controls, Xcelsius components have a Dynamic Visibility property. Using its magic in a conjunction with a Push Button component, we can simulate Excel’s check box functionality in Xcelsius.

Let’s create a model that demonstrates this technique:

1. Add two Push Button and two Check Box components to a canvas. We are going to extend the methods described in another post, Customizing a Push Button and combine check boxes and a push button into one custom push button. We also can use the Image Components instead, if we have a pair of good images of a checked and unchecked check box. It makes sense especially if we want to display the check boxes that look fancier than Xcelsius ones.

2. Set Item property of one of the check boxes as a Checked and the other one as Unchecked. Item property is located on the Common tab of the Behavior section. Bind Source Data for the push buttons to cell A3 and Destination to H3. The Excel formula in A3 is =1-H3 and the initial value in the H3 is 1.

3. Cell H3 will define the Dynamic Visibility Status property for both check boxes. Set the Key property for the checked check box to 1 and 0 for the unchecked one.

At this point the model set up should be similar to the following figure:

1. One of the push buttons will be displayed as is and the other one will be transparent. Its Label property should be blank and the Show Button Background property unchecked.

2. Stack check boxes and place the transparent push button on top of them.

3. Add Spreadsheet Table component to see what happens behind the preview.

Now we are ready to test.

When a preview starts we can see that the check box is checked and the values in A3 (shade in green) is 0 and in H3 (shaded in yellow) is 1.

When a user clicks on a check box, the unchecked one is displayed instead, and the values in H3 and A3 get changed to 0 and 1, respectively.

Clicking on the unchecked check box brings the model to the initial state. And, as we remember, the real click happens on the push button, not on a check box. But it’s transparent to a user.

Clicking on the shown push button updates the value in a status cell H3. But this time, unlike out-of-the-box Xcelsius behavior, the status of the displayed check box, from the user experience perspective, is also changed. In reality, we just alternated the display of the check boxes, but a user doesn’t know it (and doesn’t care).

This approach allows mimicking the Excel check box functionality in resetting the Checked/Unchecked status of the Xcelsius Check Box component. It also gives us a working model that we can extend to more complex designs that provide rules based dynamic selection of logically grouped multiple check box components. I’m going to show such an example in the Part 2 of this series: Select all or Select none.

Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.


Customizing a Push Button component in Xcelsius

One of the cool additions introduced in Xcelsius 2008 SP3 was a Push Button component. Now, with just a click of a button, you can copy (push) not only a single cell value, but multiple values in the contiguous range of cells to the destination range of the same size. You can also customize the look of a Push Button component to match dashboard requirements.

This tutorial illustrates how to create a custom Push Button by layering it on top of an Image component. To start:

1. Add a Push Button component to the canvas and select its properties.

2. On the General tab clear the text in the Label property and set Source Data and Destination properties as required. For this demonstration I set them correspondingly to the ranges $A$2:$A$6 and $B$2:$B$6.

3. Resize the Push Button dimensions as required by design.

4. Prepare an image file to be combined with the button. To avoid image distortion it should be proportionally similar to the desired dimensions of the Push Button. As an example, I copied from Google images an icon that symbolizes the Select All function.

5. Add an Image component to the canvas and on the General tab click the Import button. Although the label next to the Import button says JPEG or SWF options, Xcelsius also accepts BMP, GIF and PNG files.

6. Import the image file and check Resize Image to Component option.

7. If needed, resize both components to the same dimensions.

8. Place the Push Button on top of the Image component. To assure a proper layering apply Send To Back to the Image component.

9. Select the properties of the Push Button component, go to Appearance section and on the Layout Tab drag the Transparency slider to 100%. Alternatively, we can uncheck Show Button Background option on the same tab.

10. To ease maintenance, select both components and Group them together.

11. To visualize what happens under the hood, add to the canvas a Spreadsheet Table component with its Display Data property pointing to the range $A$1:$B$6.

12. Open Preview and test. It should be similar to the screen shots depicted below:

Preview on Load before click on a Push Button.

Preview after click on a Push Button

Combining a transparent Push Button component with an Image component underneath allows for a customized look and feel of the dashboard, enriching user experience.

Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.


Interested in Reporting? New SAP Crystal Reports Content Coming Soon

Welcome to the first of many posts on Everything Xcelsius that will cover Crystal Reports. The goal for this post is to introduce myself and explain the series of posts that you will be seeing over the coming months. So let’s get straight to the first of these topics.

My name is Coy Yonce and I’m one of the Product Owners who work on the Crystal Reports product. If you are not familiar with the agile approach to product development, then you may not be familiar with the role of a Product Owner. In essence, I’m a Product Manager and I help create the backlog of features that the development will be building from one release to the next. My role as  Product Owner is a bit different from the role of the other Product Owners on the Crystal Reports team. In all, there are seven of us. The other six work directly with a team of developers and guide those developers during the building of features. My role is that of an outbound Product Owner. I focus on leading conversations with customers and partners so that we have an understanding of what they want to see us include in upcoming versions of the product. As such, I am fairly active on Twitter, blog every so often, conduct surveys, co-host influence council meetings, write articles, interact on forum posts, and monitor ideas on SAP IdeaPlace. I’m sure that there are a few other things as well, but that’s most of it.

Over the next few months, you will see several posts from me. They will be organized into a series of posts on somewhat tactical topics. I have provided an brief overview of the series below. I have listed them in the order that I plan to write; however, I may get a bit sidetracked as I encounter an interesting topic or discussion.

Introduction to SAP Crystal Reports and Enterprise Reporting
This will likely be a single post and will provide an overview of Enterprise Reporting, the market, and how Crystal Reports fits in.

Types of Reports
More than likely, this will be delivered over four posts with each covering a major category of report types that are typically created using Crystal Reports.

Major Features
Again, probably a series of numerous posts with each discussing a category of features that are used together for creating reports in Crystal Reports.

Design Considerations
This series will focus on designing effective reports. Specifically, it will demonstrate how to create reports that follow information design best practices.

Connecting to Data
Crystal Reports currently has over 50 available connections available. This series will focus on not only the types of data available for creating reports, but specific considerations for building reports against some of those data sources.

Sharing Reports
Once you’ve created your reports, you need to distribute them. This series will focus on the methods available for delivering your reports.

Embedding Reports
Crystal Reports has a very large ecosystem of developers from OEM partners and ISVs. Much of what they do is embed pre-built reports into their applications or generate reports at runtime based on data from their applications. This series will focus on how to embed Crystal Reports and leverage your application data.

As you can see the topics are quite broad and will encompass a significant number of posts. As mentioned above, I will attempt to cover these topics in order; however, I may need to skip around a bit to cover a set of related topics properly. In any case, I look forward to blogging on Everything Xcelsius and would like to thank Mico and Soo for the opportunity to interact with such a diverse audience.

Thanks for reading.

Coy Yonce is a Crystal Reports Product Owner at SAP and has worked in Business Intelligence for over 10 years. His  main focus is leading conversations with customers and partners and is very active in the BI community. You may reach out to him directly via email at or follow him on twitter: @coyyonce.


Xcelsius SDK Tips

During everyday development with the Xcelsius SDK there are quite a few things that can be taken for granted once you get comfortable with the technology and process. These “for-granteds” can often be points overlooked by developers getting started with the SDK and can cause considerable pain if they’re not properly evaluated and accounted for up front.

Here are 3 points to be aware of that I’ve been meaning to cover. I was reminded of all of them again this week while fielding various related questions from people getting started with the SDK. Hopefully they can help you out.

1. Flash Shared Local Objects just got more slippery

With the most recent release of Flash Player 10.3, users can now delete Shared Local Objects with ease. Individuals could always clear out SLO’s but the most recent player release made it quick and easy to accomplish. In short, if you’re developing custom components for Xcelsius that rely on the use of SLO’s, you may want to brace for more support calls and also document and alert your users on how SLO’s are leveraged. You can bet people will be inadvertently deleting them.

2. XLP’s and XLX’s should be archived

XLP’s, or Xcelsius Add-On Packager Files, generate unique XLX installer files so that end users can install your custom components in their Xcelsius environments. XLP’s stamp XLX’s with unique ID’s that are used by the Xcelsius Add-On Manager to determine if a component that is attempting to be installed already exists in that Xcelsius environment. Long story short, if you lose your original XLP file that you used to generate and distribute your original XLX file(s) and you have to create a new XLP file and generate new XLX files for subsequent distribution to end users, you’re likely going to encounter installation issues that require any preexisting component by the same fully qualified name to be uninstalled before the new one can be installed. This obviously isn’t the end of the world but it can create confusion and should be avoided if possible.

3. Common Component Classes – First in Wins

If you have multiple add-ons that you maintain and some or all of those components leverage a set of base classes and those components and the base class functionality that they rely on can potentially or do evolve (get released) at different paces, be keenly aware that the Flash Player operates using first-class-loaded-wins. This means that any components that rely on a common class will be using the first version of that class that was loaded by the Player. If there are any inconsistencies between the first class loaded and the class functionality that a given component is actually expecting, this can create some obvious and not so obvious behaviors and/or bugs at runtime. Be sure to nail down a strategy that allows all of your components to coexist and evolve peacefully.

Evan DeLodder is CTO at Centigon Solutions, an SAP Partner focused on the development of cutting edge mapping technologies in the Business Intelligence space. To learn more about him, please visit our Gurus page.


Webinar Alert: Improving Xcelsius Dashboard Performance

Join Mike Alexander (Author, Crystal Xcelsius for Dummies & Microsoft Excel MVP) and Mico Yuk (SAP Mentor & Co-Founder, Benchmarkers Business Intelligence) on Friday, April 8, 2011, at 1pm EST, for a one hour webinar, titled: “Improving Xcelsius Dashboard Performance“.

In this session, Mike and Mico will share some techniques you can use to speed up your sluggish dashboard solutions.

Learn “How To”:

  • Use Performance Enhancing Excel Functions and Modeling Tips
  • Avoid Dashboard Habits That Slow Down Your Solutions
  • Lighten Dashboard Models with Server-Side Solutions
  • Leverage Performance Enhancing Tips for Qaaws And Live Office
  • Find out which Add-ons really help performance

We also have a surprise giveaway! So this is definitely a MUST Attend!

Webinar Details:

Also, don’t forget our Xcelsius Advanced Developer Workshop in Miami, FL is less than 3 weeks away. Seats are filling up fast and last year we had a waiting, so register before its too late!

Soo Tang Yuk is the ‘Xcelsius Gurus Network” community manager and evangelist. To find out more about her, please visit the About Us page.