IBM Intelligent Operations Center key performance indicators (KPIs), Part 2: Defining a parent KPI

The IBM Intelligent Operations Center is a new product from IBM designed to help cities manage and improve their operations. It provides a key performance indicator (KPI) subsystem that allows cities to monitor and assess performance of city services, programs, and other resources. This is the second in a series of articles that shows how to model, implement, and test IBM Intelligent Operations Center KPIs. This article discusses how parent KPIs and parent-child KPI relationships are modeled and how asynchronous notifications of KPI updates are triggered.

Share:

Allen Smith (allens@us.ibm.com ), Senior Certified IT Specialist, IBM

Allen Smith photoAllen Smith is a Senior Certified IT Specialist a member of the IBM Industry Solutions Development group in Research Triangle Park, North Carolina. He develops new content that extends the Industry Solutions offerings.



24 August 2011

Introduction

The IBM Intelligent Operations Center KPI subsystem uses IBM Business Monitor as its KPI processing engine. In Part 1 of this article series we looked at how to model a low-level KPI (a KPI with no children) using the IBM Business Monitor toolkit. In this article, we discuss how to define and model parent KPIs and parent-child relationships, and how to use outbound events to send asynchronous KPI update notifications to the IBM Intelligent Operations Center.

The Intelligent Operations Center sample KPIs are defined as nested KPIs, meaning there is a parent-child relationship between KPIs. To help illustrate the concepts, let's revisit the IBM Intelligent Operations Center sample Police Department KPIs shown in Figure 1. There are two low-level KPIs in the Police Department KPI set. Crime Response Time Precinct One, which we looked at in Part 1, calculates the average crime response time for Precinct One. Its sibling, Crime Response Time Precinct Two, calculates the average crime response time for Precinct Two. The parent of these two KPIs is Crime Response Time, which itself has a parent called Police Department.

Figure 1. Police Department KPIs
Police Department KPIs

The top level parent KPI within a given KPI tree is referred to as a level 1 KPI, its children are referred to as level 2 KPIs, and so on. In Figure 1, Police Department is a level 1 KPI, Crime Response Time is a level 2 KPI, and Crime Response Time Precinct One and Crime Response Time Precinct Two are level 3 KPIs.


Expression KPIs

KPIs get their values in one of two ways: the value comes from a metric (typically a value in a Common Alerting Protocol (CAP) message) using an aggregation function, or the value comes from a calculation based on other KPIs or user-defined XPath functions. We refer to KPIs that get their value from metrics and aggregation functions as aggregation KPIs. We refer to KPIs that get their values from other KPIs or user-defined XPath functions as expression KPIs. While IBM Business Monitor allows a KPI value to be calculated using other KPI values, it does not provide a means for defining hierarchical relationships between KPIs. Given this, how does the IBM Intelligent Operations Center support nested KPIs? It does this by defining the parent-child relationships in the IBM Intelligent Operations Center and using KPI expressions within Business Monitor to calculate parent KPI values.


Create an IBM Intelligent Operations Center parent KPI

We will use the Crime Response Time KPI from the Police Department KPI set to illustrate how to create an IBM Intelligent Operations Center parent KPI. The pattern used in the IBM Intelligent Operations Center sample KPIs is to define parent KPIs as expression KPIs. We create expression KPIs in the same manner as we do aggregation KPIs. You can create KPIs using the KPI context pop-up menu as shown in Figure 2.

Figure 2. KPI context popup menu
KPI context popup menu

After you create the KPI, you specify the KPI type (Decimal or Duration), define the KPI ranges, and specify the KPI definition. The difference between expressions and aggregation KPIs lies in the KPI definition. Expression KPIs use expressions for the KPI calculations (as opposed to aggregation functions) and do not have time or data filters. To specify a KPI as an expression KPI, select the Write an expression to calculate this KPI based on existing KPIs option in the KPI Value view, as shown in Figure 3.

Figure 3. Expression KPI definition
Expression KPI definition

The KPI range names and colors are displayed in the IBM Intelligent Operations Center KPI portlets to indicate a KPI's status. The pattern used in the IBM Intelligent Operations Center sample monitor models sets parent KPI values to 0, 1, or 2; where 0 maps to acceptable, 1 to caution and 2 to take action. This mapping uses the range definitions shown in Figure 4.

Figure 4. Parent KPI range definitions
Parent KPI range definitions

Parent KPI expression

When defining an expression KPI, the monitor model editor displays a KPI Calculation form where you enter the KPI calculation expression. The IBM Intelligent Center Operations sample KPIs use if-then-else statements in the KPI expression to evaluate the child KPI values and set the parent KPI value based on the evaluations. Listing 1 shows the general KPI expression used in the IBM Intelligent Center Operations sample monitor models for KPIs with more than one child.

Listing 1. KPI expression
if (
   child_KPI_1 value >=   
   child_KPI_1/take_action/startValue or 
   child_KPI_2 value >= 
   child_KPI_2/take_action/startValue 
  ) then 2  
else ( 
     if ( 
          child_KPI_1 value >=         
          child_KPI_1/caution/startValue or 
          child_KPI_2 value >= 
          child_KPI_2/caution/startValue 
         ) then 1 
      else 0

The KPI expression shown in Listing 1 does the following:

  • Checks if the value of child_KPI_1 or child_KPI_2 is greater than the start value of either child's take_action range start value. If this condition evaluates to true, the parent KPI value is set to 2. As shown in Figure 4, 2 maps to the take action range. If either child KPI value indicates "take action" then the parent KPI value is set to indicate "take action" also.
  • Checks if the value of child_KPI_1 or child_KPI_2 is greater than the start value of either child's caution range start value. If this condition evaluates to true, the parent KPI value is set to 1. As shown in Figure 4, 1 maps to the caution range. If either child KPI value indicates "caution" then the parent KPI value is set to indicate "caution" also.
  • If neither of the previous checks evaluates to true the parent KPI value is set to 0. 0 maps to the acceptable range.

Figure 5 illustrates the KPI calculation expression defined for the Crime Response Time KPI.

Figure 5. Crime Response Time KPI expression
Crime Response Time KPI expression

For KPIs with only one child, if-then-else statements are not required in the KPI expression to roll the child KPI value up to the parent. When a KPI only has one child, all you need to do is assign child KPI value to the parent KPI value.

Figure 6 shows the KPI calculation expressions defined for the Police Department KPI.

Figure 6. Police Department KPI expression
Police Department KPI expression

To provide a concrete example of how the Crime Response Time and Police Department KPI calculation expressions work, let's assume the value of the Crime Response Time Precinct One KPI is 3 minutes 30 seconds and the value of the Crime Response Time Precinct Two KPI is 6 minutes and 47 seconds. Using the range definitions for the Precinct One and Two KPIs shown in Figure 7, Crime Response Time Precinct One would fall within the acceptable range and Crime Response Time Precinct One would fall within the caution range. The KPI expressions defined for the Crime Response Time and Police Department KPIs would both set the KPI values to 1, which falls within the caution range.

Figure 7. Crime Response Time Precinct One and Two range definitions
Crime Response Time Precinct One and Two range definitions

As discussed in Part 1 (see Resources), we use KPI range definitions (range name and color) to represent a KPI's status in the IBM Intelligent Operation Center KPI Portlets. Using the Police Department KPI values just described, the Police Department KPIs would have the status values shown in Figure 8 when displayed in the KPI drill down portlet.

Figure 8. KPI drill down portlet
KPI Drill Down portlet

Parent-child KPI relationship

The parent-child KPI relationships are defined to the IBM Intelligent Operations Center using a Resource Description Framework (RDF) file that is imported into the IBM Intelligent Operations Center using the Model Manager component. Once imported, the definitions are stored in the Model Manager database and made available to the KPI subsystem. The KPI definitions tell the KPI subsystem what Business Monitor KPIs to retrieve and how to construct the KPI tree for each KPI set. The KPI tree is displayed in the KPI drill down portlet (see Figure 8) allowing users to expand and collapse the parent and child KPIs.

Listing 2 shows the RDF definitions for the Police Department KPI set.

  • KPIBase.name specifies the Business Monitor KPI name.
  • KPIBase.id specifies the Business Monitor KPI ID.
  • KPIDefinition.isChildOf_KPIDefinition specifies the Business Monitor KPI ID of the parent KPI. If the KPI is a top level KPI (has no parent), it specifies the ID of the monitor model containing the KPI.
  • The KPI and monitor model IDs defined to Model Manager tell the KPI subsystem what KPIs should be fetched from the Business Monitor server.
Listing 2. RDF KPI definitions
<icop:KPIDefinition rdf:ID="Police_Department">
<icop:KPIBase.name>Police Department</icop:KPIBase.name>
<icop:KPIBase.id>Police_Department</icop:KPIBase.id>
<icop:KPIDefinition.isChildOf_ModelDefinition 
rdf:resource= "#icoc_sample_public_safety_monitor_model"/>
</icop:KPIDefinition >

<icop:KPIDefinition rdf:ID="Crime_Response_Time">
<icop:KPIBase.name>Crime Response Time</icop:KPIBase.name>
<icop:KPIBase.id>Crime_Response_Time</icop:KPIBase.id>
<icop:KPIDefinition.isChildOf_KPIDefinition rdf:resource= "#Police_Department"/>
</icop:KPIDefinition >

<icop:KPIDefinition rdf:ID="Crime_Response_Time_Precinct_One">
<icop:KPIBase.name>Crime Response Time Precinct One</icop:KPIBase.name>
<icop:KPIBase.id>Crime_Response_Time_Precinct_One</icop:KPIBase.id>
<icop:KPIDefinition.isChildOf_KPIDefinition rdf:resource= "#Crime_Response_Time"/>
</icop:KPIDefinition >

<icop:KPIDefinition rdf:ID="Crime_Response_Time_Precinct_Two">
<icop:KPIBase.name>Crime Response Time Precinct Two</icop:KPIBase.name>
<icop:KPIBase.id>Crime_Response_Time_Precinct_Two</icop:KPIBase.id>
<icop:KPIDefinition.isChildOf_KPIDefinition rdf:resource= "#Crime_Response_Time"/>
</icop:KPIDefinition >

Asynchronous KPI updates

The KPI subsystem configuration settings affect when KPIs are fetched from Business Monitor and how they stored. By default, the KPI subsystem preloads and stores the KPIs in a cache. The default cache refresh time is two hours. For most KPIs, the refresh time is sufficient to deliver KPI updates to the IBM Intelligent Operations Center in a timely manner. For KPIs that have shorter periods, or for those KPIs that change frequently, the cache refresh time may be insufficient.

Business Monitor can generate and send outbound events from a monitoring or KPI context when it detects a business situation. It can send these events to external message queues that allow event driven applications such as the IBM Intelligent Operations Center to consume them. Figure 9 illustrates how the KPI subsystem uses this mechanism to receive asynchronous KPI updates.

Figure 9. Asynchronous KPI update flow
Asynchronous KPI update flow

A single outbound event is created for each KPI set. The outbound event is an XML document (Notification XML) containing the values for all KPIs in the KPI set. Figure 10 shows a sample notification for the Police Department KPI set.

Figure 10. Notification XML
Notification XML

To create an asynchronous notification, you have to define a trigger, a trigger source, and an outbound event that sends the Notification XML. As described in the first article, triggers are control points used to initiate or trigger additional processing within Business Monitor. For outbound events, triggers initiate the outbound event processing. The trigger source is the mechanism that initiates the trigger processing. The IBM Intelligent Center Operations sample KPIs use two different trigger sources. The first is an event-based source. Each KPI set has an associated inbound event that serves as the trigger source. The inbound event is mapped to the CAP message or messages that affect the values of the KPIs in the set. When the CAP messages are received, the trigger fires and sends the outbound event notification. In theory, the CAP messages may not always trigger a KPI change but in practice they usually do. When it receives the outbound event notification, the KPI subsystem determines whether a KPI has changed.

Event-based trigger sources are ideal for sending asynchronous notifications when the input for a KPI calculation changes. However, they do not address the situation when a KPI value changes based on an expiring period. The Severe Traffic Accidents KPI, for example, has a period of one hour. Assume the KPI has a value of 3 at 10:00 am and that no CAP messages affecting the KPI are sent to the Business Monitor server during the next hour. At 11:00 am the period expires and the KPI value will be 0. To address this situation, the sample monitor models use time-based trigger sources that fire at regularly scheduled intervals for KPIs with short periods.


KPI inbound event

The IBM Intelligent Operations Center sample monitor models define one inbound event for each KPI set. Defining an inbound event for a KPI context is similar to defining one for a monitoring context. You specify the event name and ID, the CAP schema and a filter condition but you do not define a correlation expression. You can create inbound events, outbound events, and triggers using the KPI context pop-up menu, as shown in Figure 11.

Figure 11. KPI context pop-up menu
KPI context pop-up menu

The KPI inbound event naming convention used by the IBM Intelligent Operations Center sample monitor models combines the level 1 KPI name with the string "KPI Change Trigger Message". The level 1 KPI in our example KPI set is Police Department which results in an inbound event named Police Department KPI Change Trigger Message as shown in Figure 12.

Figure 12. KPI context inbound event
KPI context inbound event

Connecting the inbound event to the CAP XML schema

As you did with the monitoring context inbound event, you need to specify the CAP XML schema to Business Monitor so that it knows the CAP message structure. Without this knowledge, Business Monitor will not be able to determine the CAP event type, which it uses to filter out CAP messages that do not affect the values of the KPIs in the Police Department KPI set. To specify the schema use the Events Type Details add function and reference the CAP-v1.2-os.xsd file. See Figure 13. This file is contained in the IBM Intelligent Operations Center sample Business Monitoring project.

Figure 13. Event Type Details
Event Type Details

Inbound event filter condition

The inbound event filter condition is an expression used to determine which incoming CAP message or messages will serve as the trigger source. As previously mentioned, the IBM Intelligent Operations Center sample monitor models use one inbound event as the trigger source for each KPI set. As a result, the filter condition needs to specify the CAP message or messages that affect the values of all the KPIs in the KPI set. For the Police Department KPIs, CAP messages with an event type of Crime_Response_Time are the only messages that change any of the Police Department KPI values. While we are only interested in this event type, we do need to filter out Crime_Response_Time messages that do not have a severity of severe or extreme, and those that are not for Precinct One or Precinct Two. To accept only CAP messages meeting this criterion, you would need to define the filter condition, as shown in Figure 14.

Figure 14. Inbound event filter condition
Inbound event filter condition

Outbound event trigger

After defining the inbound event that will serve as your trigger source you can define the trigger itself. The outbound event trigger naming convention used by the IBM Intelligent Operations Center sample monitor models combines the level 1 KPI name with the string "KPI Change Trigger". Using our example KPI set, the trigger name would be Police Department KPI Change Trigger.

To define the trigger select the Trigger is repeatable option to insure the trigger fires more than once. In addition to the trigger source, the trigger definition allows you to specify an optional trigger condition which provides additional control over when the trigger fires. The IBM Intelligent Operations Center sample monitor models define a trigger condition to ensure the level 1 KPI has been set to a value of 0, 1, or 2. This trigger condition ensures the trigger will fire only when the correct CAP message(s) have been received and the top level KPIs have been set. Figure 15 shows the completed Police Department KPI Change Trigger.

Figure 15. Police Department KPI Change Trigger
Police Department KPI Change Trigger

Outbound event

The outbound event defines the information sent from the Business Monitor server to the IBM Intelligent Operations Center KPI subsystem. Creating an outbound event is similar to creating an inbound event. You specify the name and ID, and the schema that describes the event structure. What differs between the two is you have to define the content of the outbound event.

The outbound event naming convention used by the IBM Intelligent Operations Center sample monitor models combines the level 1 KPI name with the string "KPI Change Notification". Using our example KPI set, the outbound event name would be Police Department KPI Change Notification as shown in Figure 16.

Figure 16. Outbound event
Outbound event

Connecting the Outbound Event to the Notification XML Schema

After you create the outbound event, you need to specify the XML schema used to construct it. As with inbound events, the schema must exist in the Business Monitoring project containing the monitor model. Specify schema definitions using the monitor model editor Events Type Details view, as shown in Figure 17. The Notification XML schema, IOC-notification-v1.0.xsd is included in the IBM Intelligent Operations Center sample Business Monitoring project.

Figure 17. Outbound event details
Outbound Event Details

Outbound event content

The outbound event content associates the trigger with the outbound event and defines the event content. To define the outbound event content, use the add function in the Outbound Event Content view. The add function prompts you to select the trigger, see Figure 18.

Figure 18. Select outbound event trigger
Select outbound event trigger

The Outbound Event Content view add function adds the Police Department KPI Change Trigger and the Notification XML to the Outbound Event Content view, as illustrated in Figure 19. It also indicates there's an error condition because none of the notification elements have been assigned a value.

Figure 19. Outbound Event Content
Outbound Event Content

Not all elements require values for the IBM Intelligent Operations Center KPI subsystem to process them. At a minimum, you have to set the <sentFrom> element and the <parameter> elements. The IBM Intelligent Operations Center installation configures Business Monitor to look for a value of 'Monitor' in the <sentFrom> element. This value tells Business Monitor to send the outbound event notification to the IBM Intelligent Operations Center KPI update message queue. To specify the <sentFrom> value, click on the Expression cell in the Outbound Event Content view and enter 'Monitor' using single quotes, as shown in Figure 20.

Figure 20. Set outbound event element
Set outbound event element

The <parameter> elements specify the monitor model ID and the ID and value of the KPIs in the KPI set. The IBM Intelligent Operations Center KPI subsystem uses this information to fetch a KPI from the Business Monitor server if it determines the KPI value has changed. Because the Notification XML schema allows multiple <parameter> elements, you must add the required number of elements to the outbound event before you can set the element values. To add the elements, select the parameter element in the Name cell, right mouse click and select Add Elements... from the pop-up window, see Figure 21.

Figure 21. Add parameter elements
Add parameter elements

The first parameter element specifies the monitor model ID containing the KPIs sent in the outbound event. To specify the monitor model ID you must set the <parameterName> to 'modelId' and the <parameterValue> to the monitor model ID. For our example KPI set, the monitor model ID is icoc_sample_public_safety_monitor_model.

The remaining parameter elements specify the IDs and values of the KPIs in the KPI set. The KPI ID is specified using the <parameterName> element and the value with the <parameterValue> element. You can use the content assist window to set both element values. To launch the content assist window, position the cursor in the element's Expression cell and press Ctrl+Space. To set the <parameterName>, select the KPI from the content assist window and enclose the KPI ID in single quotes. To set the <parameterValue>, select the KPI from the content assist window and wrap it with a xs:string()function. Figure 22 shows the complete Police Department KPI Change Notification <parameter> elements.

Figure 22. Outbound event parameters
Outbound event parameters

Test the KPIs

It is good practice to test your KPIs before deploying your model applications to the Business Monitor server. The easiest way to test the KPIs described in this article series is to create a class with a static main method that constructs and sends the required Crime_Response_Time CAP message to the Business Monitor server. The code shown in Listing 3 creates a Crime_Response_Time message that you can use to test the Police Department KPIs. This code snippet defines the CAP message as a String and uses string substitution to set the identifier, onset and sent dates, severity, description, precinct, report number, and response date.

Listing 3. Sample code to create a Crime_Response_Time CAP message
String event = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cap:alert 
xmlns:cap=\"urn:oasis:names:tc:emergency:cap:1.2\" 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
xsi:schemaLocation=\"urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd \">
<cap:identifier>&IDENTIFIER</cap:identifier><cap:sender>911 Operator</cap:sender>
<cap:sent>&SENT</cap:sent><cap:status>Actual</cap:status><cap:msgType>Alert</cap:msgType>
<cap:scope>Public</cap:scope><cap:info><cap:category>Security</cap:category>
<cap:event>Crime_Response_Time</cap:event><cap:urgency>Unknown</cap:urgency>
<cap:severity>&SEVERITY</cap:severity><cap:certainty>Unknown</cap:certainty>
<cap:eventCode><cap:valueName>OwningOrg</cap:valueName><cap:value>Police</cap:value>
</cap:eventCode><cap:onset>&ONSET</cap:onset><cap:senderName>911 Operator</cap:senderName>
<cap:description>&DESCRIPTION</cap:description><cap:parameter><cap:valueName>
</cap:valueName><cap:value>&REPORT_NUMBER</cap:value></cap:parameter><cap:parameter>
<cap:valueName>Precinct</cap:valueName><cap:value>&PRECINCT</cap:value></cap:parameter>
<cap:parameter><cap:valueName>Responded</cap:valueName>
<cap:value>&RESPONSE_DATE</cap:value></cap:parameter></cap:info></cap:alert>";
	
String onset = "2011-05-27T15:00:00-00:00";
String responseDate = "2011-05-27T19:12:00-00:00";
String description = "Burglary";
String severity = "Severe";
String precinct = "precinct one";
String reportNumber = "1122";
UUID uuid = UUID.randomUUID(); 
String identifier = uuid.toString();

event = event.replaceFirst("&IDENTIFIER", identifier);
event = event.replaceFirst("&ONSET", onset);
event = event.replaceFirst("&SENT", onset);
event = event.replaceFirst("&DESCRIPTION", description);
event = event.replaceFirst("&SEVERITY", severity);
event = event.replaceFirst("&REPORT_NUMBER", reportNumber);
event = event.replaceFirst("&PRECINCT", precinct);
event = event.replaceFirst("&RESPONSE_DATE", responseDate);

The code shown in Listing 4 sends the Crime_Response_Time CAP message created in Listing 3 to the Business Monitor server. For a complete test project for sending Crime_Response_Time CAP messages and getting the Police Department KPI values see the Download section of this article. The test project is contained in an archive file that you can import into Rational Application Developer or any other eclipse based development environment.

Listing 4. Sample code for sending CAP message
try {
	URL url = new URL("http://localhost:9080/rest/bpm/events");
	HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	connection.setRequestMethod("POST");
	connection.setAllowUserInteraction(false);
	connection.setDoOutput(true);
	connection.setRequestProperty("Content-type", "text/xml");
	OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
	writer.write(event);
	writer.flush();
	int rspCode = connection.getResponseCode();
	if (rspCode == 200) {
		InputStream ist = connection.getInputStream();
		InputStreamReader isr = new InputStreamReader(ist);
		BufferedReader br = new BufferedReader(isr);
		String nextLine = br.readLine();
		String returnString = new String();
		while (nextLine != null) {
			returnString = returnString + nextLine;
			nextLine = br.readLine();
		}
		System.out.println(returnString);
	} else {
		System.out.println("HTTP return code = " + rspCode);
	}
} catch (Exception e) {
	System.out.println(">>>> Exception occurred: " + e.toString());
}

Conclusion

I wrote this article series to give you a basic understanding about how the IBM Intelligent Operations Center sample KPIs were implemented. I hope by reading them you gained enough knowledge of the Business Monitor tooling and IBM Intelligent Operations Center patterns that you can modify the sample KPIs or build a set of new ones. Please refer to the IBM Intelligent Operations Center KPI Implementers Guide (see Resources) for a complete set of step-by-step instructions for implementing the KPIs described in these articles.


Download

DescriptionNameSize
A complete test projectIOC-KPI-Test-Project.zip34KB

Resources

Learn

Get products and technologies

  • IBM product evaluation versions by industry: Find the products used in each Industry Frameworks. Industry Frameworks are specific software platforms designed to harness the power of IBM products to meet industry standards.

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Industries
ArticleID=753160
ArticleTitle=IBM Intelligent Operations Center key performance indicators (KPIs), Part 2: Defining a parent KPI
publish-date=08242011