Home > Articles > Software Development & Management

  • Print
  • + Share This
This chapter is from the book

Overview of the Crystal Enterprise Servers

Now that it's clear that the functionality of individual Crystal Enterprise servers is exposed through plug-ins, it's important to understand exactly what that functionality is. The Crystal Enterprise servers are designed to register themselves with the Crystal Enterprise Framework and provide one or more services that can be consumed by other servers or by the plug-ins described in the last section. The services offered by each of the servers is dependent on the type of task that the server is expected to perform. Each server operates as an NT service or as a daemon when on Unix.


An overview of Crystal Enterprise on Solaris is provided in Appendix A, "Running Crystal Enterprise on Sun Solaris."

The following list shows the servers that are delivered with Crystal Enterprise. These servers can be thought of as "core servers." Crystal Enterprise also supports add-on servers such as the Report Application Server, which is introduced in this chapter and explained in more detail in Appendix B, "Using the Report Application Server." These additional servers do not ship as part of the default Crystal Enterprise but can be added to a deployment if an organization chooses to use the additional functionality they provide. The "core" servers available with Crystal Enterprise are

  • Automated Process Scheduler

  • Web Component Server

  • Cache Server

  • Page Server

  • Job Server

  • Event Server

  • File Repository Server

These servers can be seen in the architecture diagram in Figure 3.3.

Figure 3.3 The core server architecture for Crystal Enterprise.

With these servers in place, Crystal Enterprise can manage any reporting content, such as Crystal Reports or Crystal Analysis Professional, as well as offer rich customization services allowing organizations to deeply embed and integrate Crystal Enterprise into their already established applications or Web services.

It's important to note that multiple instances of the same server operating in the Crystal Enterprise Framework at the same time is fully supported. By doing this, Crystal Enterprise provides a scalable, reliable, and fault-tolerant system.

Crystal Automated Process Scheduler

The Crystal Automated Process Scheduler (APS) is the server that provides some of the core services that the Crystal Enterprise framework uses, such as allowing other servers to register with the framework, users to be authenticated with the system, and the storage mechanism for persisting the metadata about each object. The services provided by the APS could be categorized into three main categories, which are

  • Controlling access to system content

  • Managing content

  • Managing servers that have the capability to process content

The services provided by the APS are

  • System security

  • Object metadata storage

  • Nameserver

  • Object management

  • Object scheduling

  • Event handling

  • Server clustering

  • License management

System Security

The security service breaks security down into three main elements:

  • Authentication

  • Aggregation

  • Authorization

Crystal Enterprise provides mechanisms to allow for third-party authentication services to be used as the basis of user and group/role definition. The APS interacts with these third-party authentication mechanisms by using the following authentication plug-ins, described earlier in the chapter:

  • Crystal Enterprise security plug-in

  • Windows NT security plug-in

  • LDAP security plug-in

The enterprise security plug-in enables organizations to define users and groups directly within Crystal Enterprise and restrict use of an external source for those users. This is useful if an organization has chosen not to use an external security source or has not yet defined one. All authentication information is stored in Crystal Enterprise and does not rely on an outside source to determine whether a user is valid.

The NT security plug-in allows a customer to map any number of users and groups into Crystal Enterprise. An administrator is required to go into the Crystal Management Console (see Chapters 5 and 10) or use an application written using the SDK and define the default NT domain as well as any NT groups that might need to be mapped to Crystal Enterprise resources. After this initial mapping is complete, Crystal Enterprise will dynamically query for users within that group and establish those users as Crystal Enterprise users. When a user logs on for the first time, the security service using the NT security plug-in will ask the NT security database if this is a valid NT user and whether the user belongs in any of the mapped groups. If the user is indeed a valid user, he will be granted access to Crystal Enterprise. If at any time in the future that user is removed from that NT group, he will not be granted access to Crystal Enterprise (and, hence, reports within the system) because the security service would be told that this user is no longer a valid NT user. There's no requirement for the administrator to manually inform Crystal Enterprise that the user is no longer a valid NT user.

The LDAP security plug-in operates in a similar manner to the NT security plug-in; however, instead of talking to the operating system for a list of valid users or groups, this security plug-in communicates with a directory server using the LDAP protocol. Crystal Enterprise does not require the LDAP schema in the directory server to be modified in any way for use with Crystal Enterprise. This security plug-in provides default mappings for several directory servers, including

  • iPlanet Directory Server

  • Lotus Domino

  • IBM Secureway

  • Novell Directory Services

  • Custom


Crystal Decisions might provide support for additional directory servers, so it's helpful to check its Web site for updates.

Users and groups are queried by leveraging attributes within the LDAP schema, such as InetOrgPerson, which is an attribute used by iPlanet Directory Server. If the directory server that's planned to be used with Crystal Enterprise is not in the preceding list, it's also possible to create a custom mapping of LDAP attributes. The attributes that are used to define a group or user must be mapped to the LDAP security plug-in for these attributes to be used when querying for a user or a group.

Crystal Enterprise can aggregate or group users in two ways, as Chapter 10, "Administering and Configuring Crystal Enterprise," reviews in some detail. A group can be created directly in Crystal Enterprise or it can be mapped from one of the external authentication sources. The grouping within Crystal Enterprise is quite powerful because native and mapped groups can be used at the same time. If this method of user aggregation is taken, a native group could contain a mapped group. The use of mapped groups is important because as users are added or removed from groups in the external systems, the changes in group membership will be reflected in Crystal Enterprise. It's also possible to create a hierarchy of groups to better organize the end users of the system.

After configuring Crystal Enterprise with external users and groups is complete, it's necessary to determine which objects within the system an end user has the authority to see. After all, that's the whole point in deploying Crystal Enterprise, providing a central mechanism to control who has access to certain reports. Setting up authorization rules or access control is straightforward once users and reports have been added to the system. Chapter 10 reviews how to apply access control on objects in the system.


Authorization within Crystal Enterprise is enforced through a strong inheritance model throughout the system. This enables an administrator to set desired access levels at a root folder for a large group and have that setting be respected, regardless of how many new subfolders are created or objects are added to those folders (as well as any new users added to groups or subgroups).

Object Metadata Storage

One of the tasks that the APS performs is storing in a repository information about each object. After this information is stored, it becomes available to other objects or servers within the system. This persistent information is what is used to describe an object (such as a Crystal Report) and makes it possible to dynamically query the system and discover the properties of an object.

If the information was not stored in a repository, the system would not scale because it would be dependent on the information being stored in memory on one physical server. The APS stores this information by writing it to a relational database. The storage service is able to access these databases by using ODBC or by a direct interface to the database. The following shows databases supported by the APS and how they are accessed by Crystal Enterprise 8.5 when the APS is operating on Windows NT:

Databases Supported By Using ODBC

  • Microsoft Data Engine—MSDE

  • Microsoft SQL Server 2000 SP1

  • Microsoft SQL Server 7 SP3

  • Sybase Adaptive Server 12.5

  • Informix Dynamic Server 2000 v 9.21

Databases Supported via a Direct Interface

  • Oracle 8i (8.1.7)

  • Oracle 8.0.6

  • DB2 UDB 7.2

The databases that the APS can access on Unix are a subset of what's available on NT. If the APS is operating on Unix, it's able to use the following databases. All database connections for the APS repository are done by a direct interface.

  • Oracle 9i

  • Oracle 8i (8.1.7)

  • Oracle 8.0.6

The default database that the APS will use if one is not provided is the MSDE. Because performance of the APS database can dramatically affect system performance, MSDE is used to provide an organization a useful out-of-the-box experience. The repository is set up and configured without the need for interaction with a database administrator. If Crystal Enterprise is initially configured to use the default repository database and the need arises to move the repository to a different database server, Crystal Enterprise provides tools (the Crystal Configuration Manager) to easily migrate the data from one server to another.


The Nameserver is a service of the APS that allows all other Crystal Enterprise servers to register with the Crystal Enterprise Framework. After the server has registered through the Nameserver, it is able to discover the other servers active within the framework and use any services it needs from those servers.

Object Management

One of the key benefits of Crystal Enterprise is how it manages objects. After an object (such as a Crystal Reports) is published to Crystal Enterprise, the properties of that object are read and added to the repository. The object is then represented by metadata in the repository, which makes it possible for other services to interact with the object, and the object is formally considered a "managed object" by the system.

The concept of managed objects is a critical benefit because it facilitates the manageability of Crystal Enterprise. After an object is managed by the system, the actual location of the object becomes unimportant (that is, it doesn't have to be on a network share). If a server needs access to the object, it asks the APS for an ID to the object. If a client Web application wants to display the object, it doesn't need to know where the object lives and whether it has the appropriate machine-level mappings, such as network shares, available to it. This also makes it possible for Web applications displaying content from Crystal Enterprise to become much more dynamic.

In typical Web applications, a developer will provide access to an object through a hyperlink, which is pointing to a document on disk. Such is the case with a Crystal Report, where a hyperlink on an ASP page can call a standalone RPT file using a URL line, similar to http://servername/reportname.rpt?init=dhtml.

By having objects managed, a Web application developer can simply ask Crystal Enterprise for a listing of objects. Rather than having to know the filename or network share location, the developer can ask for all objects in a certain folder or of a certain type. Each time a user accesses the Web application, the content might be different, depending on the actual reports (objects) published into Crystal Enterprise.

Managed objects can be categorized into folders, which themselves are managed objects. This categorization adds to the manageability of Crystal Enterprise because content can be easily organized into something that is meaningful to application end users through the Crystal Management Console.

It's much easier for users to find the report content important to them if it is organized. Otherwise, users would end up spending their time looking for the content that contains the information rather than leveraging the information within these reports or objects to make decisions that affect their business.

Although navigating categories of information can be time-consuming, Crystal Enterprise offers the capability for users to subscribe to objects and place them in a home folder. This "home folder" also happens to be managed and stored by Crystal Enterprise. When users are added to the system (see Chapters 5 and 10), a home folder is created for them. When users find some content—a report for example—that they would like to access on a frequent basis, they can easily add it to their home folder by either copying it or creating a shortcut to it. When copying it, a new object is added to the system. The user then is able to make any changes to the object that she desires without affecting what other users might see. If the user creates a shortcut, it points to the actual object and inherits any changes made to the original object. ePortfolio, the out-of-the-box Crystal Enterprise end-user application, demonstrates all this capability.

For objects that can be scheduled, such as Crystal Reports, object management is extremely important to ensure that the system remains organized and performs at peak efficiency at all times. When objects are scheduled, they produce a new version of the object known as an instance. If the object is scheduled many times, it might become necessary to clean up older, unused instances. Rather than having an administrator manually clean up these instances, the system can be configured to automatically do this by setting object quotas in the Crystal Management Console.

Quotas can determine how often instances are removed from the system. Instances can be removed based on their age or how many instances exist per object. These quotas can be configured at three different levels:

  • The global level affects all objects within the system.

  • The folder level enables an administrator to set different quotas for each folder or subfolder.

  • The third level is at the object itself. This setting allows the administrator to set quotas that are unique to each individual object within Crystal Enterprise.

At each level, the administrator can configure different quotas for different groups or users within the system. See Chapter 10 for details on object instance quotas or limits.

Object Scheduling

The scheduling service of the APS makes it possible for objects such as Crystal Reports to be processed at a particular time or on a recurring basis. This service determines when an object gets processed using the Job Server. When a schedule occurs, the two main servers that interact with the object are the Job Server and the Event Server.

When scheduling a job, the scheduling service gathers information from various objects before being ready to run. It needs information from the report object regarding how to connect to the database, the desired format to output the report to, where it might be delivered (such as an e-mail address) and which server is going to process it (if there are multiple Job Servers). An object can be scheduled to be run at a particular date/time or on a recurring basis. This information is then stored in the system as a scheduled instance of the object. This is known as a ProcessingInfo object.

The ProcessingInfo object contains all the properties set on the report object when it was scheduled. It knows when the job will run, all the data-connection information, as well as formatting and distribution settings. Although it knows whether a specified Job Server is required, if that Job Server is not available, the schedule can be configured to retry the job.

A scheduled object can be dependent on an event to occur within the Crystal Enterprise system before the schedule can run. By using events with schedules, it's possible to control the necessity for a schedule to be run. If an object is due to run every day but the databases that it queries are updated sporadically, an event can be used to initiate the running of the scheduled job.

In a typical Crystal Enterprise system, it's important to have a small group of people schedule an object and then have the object owned by particular users. The scheduling service makes this possible by allowing a job to be scheduled on behalf of another user. This is useful when an organization wants to configure their system to only show instances of objects to a user if he or she "owns" that instance. Without the capability to schedule on behalf of another user, an organization would need to give each Crystal Enterprise user formal scheduling rights.

Event Handling

Crystal Enterprise supports three types of events. Events make it possible for users to ensure that scheduled jobs are processing only when external systems, say a database, are ready to be accessed. All events interface with the APS Event service when an event has been triggered.

The first event type is a scheduled event. The scheduled event allows an organization to create dependency chains when scheduling reports. This enables the user to determine whether a report should run depending on whether the preceding report was successfully completed or if it failed. An end user could easily configure a schedule event condition such that if report 1 is successful, run report 2. If report 1 is not successful, then run report 3. This can continue so that a process flow is established.

The next event type is a custom event. The custom event is sometimes also called a generic event in the predecessor to Crystal Enterprise, known as Seagate Info. This event requires application developer interaction to trigger the event by using the Trigger() method via the Crystal Enterprise SDK. This event type gives an organization a great deal of flexibility. Having an event that can be triggered by code makes it possible to have an external system determine when the event is triggered and the scheduled jobs that are dependent on it to run. A good example of this would be a database update trigger user event for Crystal Enterprise. Another might be an action performed by a user trigger event.

The third type is a file-based event. These events are managed by the Event Server and are discussed later in the chapter.

Server Clustering

As a Crystal Enterprise system grows and access to information that it contains becomes more mission critical to an organization, it's important that the system be fault-tolerant, ensuring that end users are always able to access their information.

The APS can be clustered to provide load balancing and fault tolerance for the services that it provides. When two or more APSs are clustered, they perform as an active-active collection of servers. By being active-active, they are sharing the workload, which translates into increased scalability and performance.

License Management

Crystal Enterprise can be licensed to operate in three configurations: Named User, Concurrent Access, or Processor. The APS manages access to the system based on the type of license key provided. Although a brief overview is provided here, Chapter 10 reviews this in detail.

A Named User license enables an organization to assign licenses to specific users. Using this license method ensures that these users always have access to the system. It requires that the organization obtain a license for the number of users required to access the system.

A Concurrent Access license is more flexible for organizations that might not know exactly how many users need access to Crystal Enterprise. By using the Concurrent Access license model, an organization can add as many users to the system as it likes, but Crystal Enterprise will only allow users to access the system concurrently up to the actual number of licenses. For example, if 100 concurrent access licenses (CAL) are available and there are already 100 active users in Crystal Enterprise, the 101st user would be denied access until one of the first 100 logged out or a session expired.

Crystal Enterprise can easily be configured to use both Named User and Concurrent Access license models at the same time. This gives an organization the best of both worlds. As many users as necessary can be defined in the system, and then Crystal Enterprise can determine, based on the licenses available to the system, which users are treated as concurrent access users or as named users. Following the scenario used previously with the 100 CAL licenses, if this same system also had 10 Named User licenses the administrator could define up to 10 users as a named user. When the system has 100 active users, the 10 users configured as named users are still able to log on to Crystal Enterprise because they are not counted in the concurrent access number. A typical deployment of Crystal Enterprise has higher-level organizational executives as named users.

The Processor license allows an organization the greatest degree of flexibility in regards to the number of users that can be active in the system at any one time. The level of activity is based on the hardware given to Crystal Enterprise. With the license tied to the number of processors being used by Crystal Enterprise, an organization should determine the expected user load on the system to ensure that sufficient resources are available. If hardware resources become strained as load increases and the processor license model is being used, additional licenses will need to be obtained. A Processor license model cannot be mixed with a Named User or Concurrent Access license.

Each license model is useful depending on the requirements of the system. An organization should determine how the system is expected to be used and any anticipated growth plans should be considered before choosing the model best suited for the system. The following section on scaling the system describes scenarios when one license is used over another.


Crystal Decisions updates the licensing model occasionally, so refer to its Web site for updated information.

Web Component Server

The Web Component Server is an application server provided by Crystal Enterprise that delivers seamless integration of Crystal Enterprise content into any Web application. This integration can be hosted on a variety of Web servers and provides a robust scripting interface known as Crystal Server Pages that enables the creation of rich server-side Web applications. For more information on Crystal Server Pages, refer to Chapters 6 and 13.

Web Connectors

The Web Component Server interacts with Web servers through a component known as the Web connector. The Web connector typically operates as an in-process extension of the Web server. The only exception to this rule is the CGI engine.

Crystal empress provides Web connectors for

  • Microsoft Internet Information Server

  • iPlanet Enterprise server

  • Domino Web server

  • Apache

  • CGI

The purpose of the Web connector is to redirect certain Web requests from a Web server to the Web Component Server. By having the Web connector reside on the Web server and communicate with the Web Component Server, possibly on another physical server, it allows the deployment of the Web Component Servers in a way that will facilitate "scaling out," or adding additional physical servers to the Crystal Enterprise architecture.

The Web connector is listening for several potential requests, including Crystal server pages and Accessing objects.

Crystal Server Pages

The first of these requests is for a Crystal server page (CSP). The Crystal server page is analogous to an active server page but runs on the Web Component Server rather than directly on the Web server and provides the customization services for the Crystal Enterprise Framework. The benefit of using Crystal server pages is that they give the capability to author server-side business logic, have a process on one platform and enable the integration with a Web server of choice. The use of Crystal server pages does not tie one to a particular Web server. By using Crystal server pages, it is quite simple for a Web application developer to quickly author a dynamic Web application populated with Crystal Enterprise content (such as a corporate portal, which can have many different types of content, one portion being Crystal Enterprise content). CSP provides a way of direct interaction with the Crystal Enterprise application programming interface. An example of an application written using Crystal server pages is ePortfolio, an application delivered with Crystal Enterprise. Chapter 13 provides details on how CSP pages can be used.

Accessing CSP Applications

Because of the distributed nature of Crystal Enterprise, it's likely that the Web Component Server is not on the same physical server as the Web server. If this is the case, it becomes necessary to provide two copies of the application: one on the Web server to handle any requests for HTML pages and images, and the other on the Web Component Server to handle requests for CSP pages. It's much more efficient on a corporate network to do this because it avoids files being transferred between the Web server and Web Component Server. It's necessary to map the location of the CSP pages located on the Web Component Server to a virtual folder located on the Web server. This virtual path mapping makes it possible for a Web server's virtual folder to be translated into the path on the Web Component Server where the CSP pages exist and enable the Web Component Server to properly run the CSP.

Accessing Objects

Another request that the Web connector will send to a Component Server is known as a Crystal Web request, or CWR. A CWR is a server-side object that exists on the Web Component Server and provides access to managed objects contained within the Crystal Enterprise repository.

As mentioned earlier, managed objects are a way for Crystal Enterprise to understand and interact with a given object. However, Crystal Enterprise can also interact with unmanaged objects, although they do not have access to the same services that managed objects do, such as scheduling. An unmanaged object is one that exists outside of Crystal Enterprise and is referenced directly by a URL to the report object. Chapter 7, "Publishing Content with Crystal Enterprise," provides a good example of using an unmanaged object.

Unmanaged object interaction is a mechanism that an organization can use to leave their reports outside the system and access these reports through a URL. This is most useful for organizations using Crystal Reports that have created an application before investing in Crystal Enterprise. Interacting with objects in an unmanaged way allows the customer to keep their existing application working without interruption, while at the same time giving them the capability to move those reports to the Web in a seamless way.

To use a report in an unmanaged way the reports must be accessible from a virtual directory on a Web server and a URL needs to be constructed. This URL references the report directly and can contain several URL querystring parameters.

In order for an application to use unmanaged reports, the system first must have a valid license. When the report is requested, the Web Component Server will ask for a license from the license service.

Job Server

The Job Server is responsible for processing jobs that have been scheduled in the system. It provides services to the framework that allow objects being scheduled to access the necessary datasource required, be analyzed for proper access control to that data by providing row-level data security services, and then distribute the content to a location set by the user. Job Servers are informed about the content that they process by loading a Job Server plug-in. This plug-in, like all other Crystal Enterprise plug-ins, describes what capabilities it exposes to the service using it. In Crystal Enterprise 8.5 the only Job Server plug-in is for Crystal Reports.

Essentially, the Job Server provides three main services to Crystal Enterprise:

  • Database access

  • Distribution of objects

  • E-mail

Database Access

When a scheduled job is about to be processed by the Job Server, it gathers the appropriate information from the ProcessingInfo object mentioned earlier. This information includes database connection information and any filters or parameters required that determine what the final query is. After it has this, it opens the object and queries the database for the appropriate information. The data is retrieved and stored back into the system as an instance.

Distribution of Objects

It's the Job Server's responsibility to distribute the object to the destination set by the user scheduling the job. To do this, the distribution service interacts with the distribution plug-ins mentioned earlier. This service receives the necessary information that was set at schedule time to perform its tasks. For example, if a user scheduled a job to be delivered by e-mail, the distribution service would get the To:, Cc:, subject, and body properties as well as the SMTP server that is configured for use with Crystal Enterprise. Chapter 10 shows how to configure the distribution service.

This service enables a user to send a report outside the Crystal Enterprise environment and deliver it to one of four destinations using the distribution plug-ins mentioned earlier.

E-Mail As a Destination

Crystal Enterprise uses SMTP as its e-mail distribution mechanism. SMTP is a protocol that all mail servers support, so it's easy for an organization to integrate Crystal Enterprise into its mail system, regardless of platform. By supporting standards such as SMTP, organizations are not restricted in the e-mail server types that can be used with Crystal Enterprise.

FTP Server As a Destination

The FTP Server capabilities of the distribution service allow organizations to send objects directly to an FTP server location so that it's available for other users or applications. This is useful for getting information that can be used offline by customers, partners, or suppliers. A report can also be scheduled to update information at an FTP location on a regular basis that is needed to drive another application or business process. For example, a report could be designed to provide a product pricing list, including dynamic calculations of discounts that vary by customer, and then deliver it automatically to an FTP folder on a customer's Web server. Another example might be a scheduled Crystal Report that is output to an XML document sent via FTP to an external server for a business partner's application to pick up.

Unmanaged Disk As a Destination

The unmanaged disk distribution service is used in the same fashion as the FTP server except that this service is distributing the scheduled report to a disk location that's available on an organization's internal network. Building on the preceding example, an organization could have Crystal Enterprise distribute a general pricing list to a location on disk and have this information populated on a purchase form or as a way of populating values into a Web service.

Printer As a Destination

Distributing reports to a printer available on the network is as simple as deciding what printer is to be used when the report is processed. Printing reports often is necessary when the information on the report needs to be shared with people who don't have access to a computer during analysis of that information. Situations such as team or board meetings often require that each member have a printed copy of the information to be covered.

Interacting with External Systems

Sometimes, it's necessary for a job to be intercepted before being run. Typically, organizations choose to do this so that information from an external entitlement database can be queried, and they can determine what data the user is allowed to view and modify the filter to reflect their restrictions. This is done in Crystal Enterprise using a component called a processing extension. The processing extension is loaded by the Job Server during a schedule or by the Page Server if being viewed. This extension allows for row-level security. Row-level security makes it possible for organizations to have content, such as a Crystal Report, shared by many users but the actual data that they see is targeted to them. It's also important to note that defining row-level security does not affect the content template but rather filters the view that the user sees based on the data that user has the right to see. There is no need to go into Crystal Reports and modify the report to affect which pages a user can see.

Processing extensions are just that, an extension of Crystal Enterprise. Some examples of processing extensions are available for Crystal Enterprise with the product.

Page Server

The Page Server is responsible for delivering three services to the framework. The primary service is to generate pages for viewing reports. This capability is important to performance and scalability of viewing reports because it only ever sends a single page of the report to the viewers rather than the entire report. It does this by using a service known as Page on Demand. Other services performed by the Page Server are refreshing a report's data using a service know as on-demand viewing as well as the capability to download a report in another format.

Page on Demand

The Page on Demand service, (also mentioned in Chapter 1) receives a request to view a certain page of a report and then generates just enough information to have the report viewers display the page. As described previously, it's much more efficient in a multiuser environment to have pages of a report, rather than the entire report sent to the viewer. This service not only ensures a positive user experience by getting them the view of the report they're after, it also is important to administrators.

Page on Demand minimizes demand on network bandwidth. Each page of the report generated by the Page Server is approximately 2KB in size. A report is usually much larger than this, especially if it's many thousands of pages containing thousands, if not millions, of rows of data. It should now be apparent why Page on Demand is a useful service. This service goes one step further by ensuring a positive user experience through a technology known as report streaming.

Report streaming builds on Page on Demand by determining which objects in the page might take longer to calculate than others and then deliver them to the viewer slightly behind objects that can be generated quickly. For example, the report might contain summaries or charts that require additional calculations to be performed before rendering for the end user who is viewing the report. Report streaming will ensure that the rest of the information, such as the details making up the chart or summaries, is sent to the user right away. The remaining portions of a report are sent as soon as they are calculated on the server. Report streaming is similar to the placeholder technologies that browsers use when loading images.

On-Demand Viewing

The Page Server allows a user to refresh the view of the report dynamically instead of scheduling the report. To take advantage of this service, users first must be granted the proper access level for the object that needs to be updated.

If a user has this access level, he has the capability to force the report to connect to the database upon their request. When the user refreshes the report, he will be prompted to enter any relevant information the report requires, such as database connection information or parameter values. Before enabling on-demand viewing for all users, the use of the system and size of reports must be taken into consideration. If many users are querying the database at the same time, are they asking for similar information? If so, the report could be run once and then shared among many users. What amount of data is expected to be returned or how long is the report expected to run? Often, a report might be too complex to enable all users in an organization to run it themselves. Based on the amount of time spent in the database, on the network, and in the report engine, a report can take several seconds, or even minutes, to complete. If this situation occurs, it makes sense to schedule any complex reports that spend a lot of time processing and allow that report to be shared among the users.

Exporting to Other Formats

The Page Server makes it possible for users to request to have the report presented to them in a format other than Crystal Reports. These formats are Microsoft Word, Microsoft Excel, Adobe Acrobat, rich text format, text, or XML. The user can request these formats by either using the querystring described previously or by selecting the Export button in the report viewers. The text and XML formats are not available when using the export feature of the viewers. Using the Crystal Enterprise SDK, there are a number of ways to export a report into any format supported by Crystal Enterprise, including XML.

Row-Level Security

In the same manner as the Job Server, the Page Server is able to restrict information presented to users based on a row restriction set by a processing extension. The main difference here is the Page Server is providing this capability at view time rather than at schedule time. Each method has its benefits. If a report has a row restriction applied to it during scheduling, the amount of data being returned to the report is filtered during the query. This means that the report instance only contains data that is relevant to the user who scheduled it. Another method is to apply the row restriction at view time.

If restrictions are applied at view time, the report instance contains the data necessary for the report, regardless of who is viewing it. When a user requests the report, the Page Server communicates with the processing extension to determine the row restriction to be applied for the user viewing the report. The data is then dynamically filtered so that the user is seeing only the data that he is able to see.

Cache Server

The Cache Server is an integral component to the overall scalability of Crystal Enterprise. It establishes a cache of report pages generated by the Page Server and promotes the sharing of this information. This is an important facet of the Crystal Enterprise Framework because, instead of having the report page regenerated for each user who requests it, the Cache Server determines whether the page can be shared among users. If it can, it will return the cached page. The Cache Server receives these requests from the Web Component Server and when the request is received, it checks to see whether the page requested is available in cache. If it is, the page is returned to the Web Component Server to complete the request. If it is not, the request is sent to the Page Server to have it generated.

Cache Management

The Cache Server is responsible for maintaining a cache of report pages generated by the Page Server on disk. When a request for a page is received, the Cache Server checks to see whether the page is available in its cache and whether it can be shared. If it is a sharable page, the server will return the page to the user. If the page cannot be shared, the request is sent to the Page Server to generate a new page.


Sometimes, pages are not sharable. The Cache Server determines that a report page is not sharable if it meets one of these conditions:

  • Row-level security is being enforced—If row-level security is being used, the page of information is valid only for the user who requested it; therefore, the Cache Server is unable to pass this page onto another user.

  • The query within the report has changed—The query for the report can change if a user chooses to view a report and change the filter already previously defined or change a parameter value. When this occurs, the cached page is invalidated and must be regenerated.

Event Server

As you learned earlier in the chapter, events are actually managed by a formal server in Crystal Enterprise. The Event Server provides a way for Crystal Enterprise to monitor events that are occurring outside its environment. It enables an organization to trigger the running of scheduled jobs that are dependent on a certain event in their environment to occur.

The main service that the Event Server provides is the capability to monitor the outside system for the existence or modification of a file. Using a file to trigger an event is a useful way of determining when the event is triggered because the generation of a file is a common thing for a lot of systems to do. For example, an organization might perform a nightly data warehouse update.

An organization would want the reports to wait until this load is complete because if they run when the data warehouse is offline, all the scheduled jobs would fail and the users would be upset when they went to view their reports. To ensure that reports don't run until the load is complete, they configure the Event Server to monitor the file system for a log of the completed update to be created. When this file is created, an event in Crystal Enterprise is triggered and the Event Server notifies the APS. Any reports that are dependent on this event are initiated and sent to the Job Server for processing.

File Repository Server

The File Repository Server provides the Crystal Enterprise Framework with two core services. The first is the capability to provide a centralized content storage facility, and the other is the capability to abstract the location of these objects from other services within the framework.

Centralized Storage of Content

Crystal Enterprise provides two File Repository Servers. An input FRS is used to store any content that has been published to Crystal Enterprise by the Publishing Wizard or from the design tool. When content is published to Crystal Enterprise, the object is copied from the client to a location on the FRS. This location is set by the installation of Crystal Enterprise but can be controlled by the administrator by modifying the root directory of the FRS. The objects are placed into unique folders on the server and are given unique names to ensure that there will not be any conflicts with other objects.

An output FRS is used to store the content generated by a scheduled job. The output server operates in the same manner as the input server by generating a unique name and location for each object.

Abstraction of Content Location

Now that the content is centrally stored and managed, the FRS provides a powerful way of abstracting the actual location of the objects from the other framework services. This abstraction is delivered by using Uniform Resource Identifiers, or URIs. The FRS uses the URIs as a way of providing a virtual location to the content. This makes it easy for services to request an object from the FRS without the need to ensure that it has access to the actual physical disk location. From a deployment and administration perspective, the job is much easier if objects are referred by URI. There is no need for complex network configurations, such as setting each service to run as a user account so they can access network shares.

Report Application Server

The Report Application Server is a powerful add-on server to the Crystal Enterprise Framework. It enables organizations to take their Web reporting a step or two further than viewing content over the Web. The Report Application Server provides three new components for the framework: a new viewer that can be embedded more directly into Web applications, a full object model for creating and modifying a Crystal Report, and a dedicated server for handling the creation and modification requests. The Report Application Server is discussed in detail in Appendix B.


Note - Based on the current licensing model for Crystal Enterprise, the SmartReporting (Report Application Server) add-in must be purchased in addition to Crystal Enterprise. Refer to Crystal Decisions for updates to their licensing models.

Ad Hoc Query Concepts

One of the main benefits of adding the Report Application Server to the Crystal Enterprise Framework is that organizations can quickly and easily add ad hoc query capabilities to their Web applications. The Report Application Server makes it possible to connect to a server-side datasource, query for information, and then display that information, all with a zero client viewer in a Web browser. By using any of the built-in clients that are delivered with the Report Application Server or using the object model to create a custom user interface, it's possible to take ad hoc querying to the next step by formatting the data into a presentable report.

Web Report Design

The Report Application Server can take the data returned as part of the previously mentioned ad hoc query issued by an application user and allow them to begin to format the report. The user is able to modify the query in many ways to format it into a quality report. End users can sort data, group it, and create calculated fields to manipulate data into a view that is suitable for them. After retrieving the data from a database, additional visual components can be applied to the report. The user can modify font information on the report for a more visually appealing look.

A report style can be applied to quickly update the entire report view to a preformatted style. Many times a report requires visual elements, such as charts, to be added for users of the report to quickly understand the data within the report. The Report Application Server also provides end users with the capability to embed a chart. The charts can be any type supported in Crystal Reports. The major benefit is that none of this detracts from Crystal Enterprise's major appeal: a zero-client environment. The embedded ePortfolio sample for Report Application Server is entirely DHTML.

Integrated, Embedded Viewing

When it comes to viewing the results of a recently created report or query, organizations have the flexibility to deeply embed the Crystal Enterprise report viewer into their Web applications. There is no need to use frames and dedicate one of the frames to the report viewer application. There is no need to have the report loaded into a new window. The report viewer that is delivered with the Report Application Server has the capability to be embedded into a <DIV> statement. This makes it possible for a Web application developer to place the viewer exactly where he wants it to appear. Another benefit of this viewer is that it provides an object model that enables it to be manipulated on the server. The application developer has the capability to modify the viewer with properties that allow the toolbars and navigation trees to be turned off.

The viewer supports an event model that provides application developers with the information selected by the user in the viewer. This makes it easy for organizations using the Report Application Server to make closed loop systems.

This means that when the event model is used, a report can become much more interactive and drive more business value. For example, a retail organization is using Crystal Enterprise to present their product catalog to their users. The reports are very useful and allow users to browse the catalog, drill in for more details on items, and so on. If the user wants to order something, he needs to navigate to another form to enter his order and he has to keep looking back to the catalog report to remember the part number he wants to order.

Using the event model of the Report Application Server this organization can, without changing their catalog report, enable the user to click on the item he wants right within the view of the catalog. This event captures the data that the user clicked on and will allow the Web developer to populate the order screen with this information with no user interaction. If the report also displayed inventory counts, the report could be updated as soon as the user finished their transaction.

Rich Object Model

The Report Application Server provides a powerful object model that allows an organization to control any aspect of how a user performs an ad hoc query or formats it. In typical ad hoc tools the users are given the same tool and the organization deploying the tool has no say in how the user is able to perform their tasks.

With the Report Application Server and its object model, an organization can determine the best way to present ad hoc reporting capabilities to their user base. For example, an organization might decide to deploy an ad hoc tool that allows end users to determine what data elements they need to see but there is no facility to apply a filter. This is because the administrator of this organization established a filter for the users and has stored this in a hidden database. The application developer takes this value and applies it to the user's query programmatically, all without the user knowing that this is occurring.

  • + Share This
  • 🔖 Save To Your Account

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020