Managing Service Providers and Applications

     Previous  Next    Open TOC in new window    View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Defining Service Provider Level and Application Level Service Agreements

An application's access rights to BEA WebLogic Network Gatekeeper are specified in Service Level Agreement (SLA) XML files. There is an SLA associated with the service provider group and one associated with the application group. For more information on this administration model, see Creating and maintaining service provider and application accounts.

If there is a conflict of values between the service provider SLA and the application SLA, the most restrictive value always applies.

 


Structure of a Service Level Agreement

The xsds for the SLAs are found in directory $DOMAIN_HOME/policy/sla_schema. The application group SLA xsd is app_sla_file.xsd and the service provider group SLA is sp_sla_file.xsd.

The SLA contains two main types of information specified by the attributes in the <Sla> tag and the contents of the <serviceContract> tags. Listing D-1 Service level agreement XML file overview shows the service provider level SLA XML file's main structure and the relation between the <Sla> and the <serviceContract> tags. Differences between the SLA files on service provider and application level are described in the tag descriptions below the listing.

WARNING: If your SLA XML file has spaces before the <?xml...> tag, the SLA will not load.
Listing 9-1 Listing D-1 Service level agreement XML file overview
<Sla [serviceProviderGroupID | applicationGroupID] ="spGroup1"
	xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation=
"file:./policy/sla_schema/sp_sla_file.xsd">
	<serviceContract>
		<startDate></startDate>
		<endDate></endDate>
		<scs></scs>
		<contract>
			....
		</contract>
		<overrides>
			<override>
				<startDate></startDate>
				<endDate></endDate>
				<startDow></startDow>
				<endDow></endDow>
				<startTime></startTime>
				<endTime></endTime>
				<contract>
					...
      				</contract>
			</override>
		</overrides>
		<enforceAcrossGeoSites></enforceAcrossGeoSites>
	</serviceContract>
</Sla>

<Sla>

This tag contains a number of service contracts specifying under which conditions a service provider or an application is allowed to access and use service capabilities.

The serviceProviderGroupID attribute specifies service provider group the service provider belongs to and for which the SLA is valid. For SLAs on application level the applicationGroupID attribute is used instead. It specifies the application group the application belongs to and for which the SLA is valid.

The xmlns:xsi and xsi:noNamespaceSchemaLocation attributes contains processing information and should not be changed.

<serviceContract>

This tag contains contractual data specifying under which conditions a service provider or an application is allowed to access and use specific services in Network Gatekeeper. One <serviceContract> tag is needed for each service capability a service provider and application shall have access to.

The data to be defined in the <serviceContract> tag for each service capability is described below.

<startdate>

This tag specifies the date the application can start using the service capability. Use format YYYY-MM-DD.

Note: A later start date on the service provider level service contract overrides this date.

<enddate>

This tag specifies the last date the application can use the service capability. Use format YYYY-MM-DD.

Note: A earlier end date on the service provider level service contract overrides this date.

<scs>

This tag specifies the name of the service capability. Each traffic path has different identifiers, see Network Gatekeeper Traffic Path Reference.

<contract>

This tag contains all contractual data.

The <contract> tag directly following the <scs> tag contains the default restrictions.

This tag, including the sub tags, can also be defined within the <override> tag in order to override the default restrictions, see <overrides> and <overrides>.

<overrides>

This tag is a container of one or more <override> tags.

<override>

The contract data specified within this tag is used for overriding the default contractual data given in the <contract> tag directly following the <scs> tag.

When an override occurs, only the restrictions given in the <override> section are used. That is, all restrictions that are present in the normal contract will be disregarded if not explicitly restated in the override section. No quota definitions are valid within the override section.

In each occurrence of this tag, the following sub tags can be used:

Note: For an override to be active all of the following must be true:

Since several <override> tags can be defined, with different settings for the time periods for which the restrictions applies, make sure the time periods do not overlap. In the case of overlapping time periods, there is no guarantee which contract that applies.

Below are two examples of <override> sections.

Listing 9-2 Listing D-2 <override> example
<overrides>
	<override>
		<startDate>2008-11-01</startDate>
		<endDate>2008-11-30</endDate>
		<startDow>2</startDow>
		<endDow>2</endDow>
		<startTime>09:00:00</startTime>
		<endTime>10:00:00</endTime>
		<contract>
			...
		</contract>
	</override>
	<override>
		<startDate>2008-12-01</startDate>
		<endDate>2008-12-30</endDate>
		<startDow>2</startDow>
		<endDow>2</endDow>
		<contract>
			...
	 	</contract>
	</override>
</overrides>

<enforceAcrossGeoSites>

This tag specifies is the SLA shall be enforced across geo-redundant sites.

Specify <enforceAcrossGeoSites>true<enforceAcrossGeoSites> if the SLA shall be enforced across geo-redundant site, otherwise false.

Optional tag. If not present, default is false.

Note: If set to true, the <override> tag is ignored.

 


Contract structure

The listing below illustrates the structure of the <contract> segment of an SLA.

Listing 9-3 Contract structure
<contract>
	<serviceCode></serviceCode> 
	<guarantee>
		<methodGuarantee>
			<methodNameGuarantee></methodNameGuarantee>
			<reqLimitGuarantee></reqLimitGuarantee>
			<timePeriodGuarantee></timePeriodGuarantee>
		</methodGuarantee>
	</guarantee>
	<methodRestrictions>
		<methodRestriction>
			<methodName></methodName>
			<rate>
				<reqLimit></reqLimit>
				<timePeriod></timePeriod>
			</rate>
			<quota> 
				<qtaLimit></qtaLimit>
				<days></days>
				<limitExceedOK></limitExceedOK>
			</quota>
		</methodRestriction>
	</methodRestrictions>
	<methodAccess>
		<blacklistedMethod>
			<methodName></methodName>
		</blacklistedMethod>
	</methodAccess>
</contract>

<contract>

This tag serves to hold together all service-specific data. A <contract> tag occurs once for every <scs> and once for every <override>.

<serviceCode>

Optional. Application level SLAs only.

This tag is used to specify a service code that can be used for charging purposes. A service code specified by the application in the application-facing interfaces will be replaced with this code.

<guarantee>

Optional.

This tag is used to specify a number of method requests the service provider or application is guaranteed during a specified time period (in milliseconds). Method requests from service providers and applications having the method tagged as guaranteed will have precedence above requests from service providers and applications not having the method tagged as guaranteed. Requests are given high priority if the request rate is below either the request rate stated in the service provider level SLA or the application level SLA, whichever has the higher request rate. For example, if the service provider level SLA guarantees 30 requests per second and the application level SLA guarantees 40 requests per second, the application level SLA applies.

The <guarantee> tag must encapsulate the <methodNameGuarantee>, <reqLimit>, and <timePeriod> tags within a <methodGuarantee> tag.

Note: The <methodGuarantee> tag is ignored for mobile-originated traffic.

Each method in <methodNameGuarantee> must also be defined in <methodRestrictions>. The time period defined for a certain method must be identical in both the <guarantee> tag and the <methodRestriction>. See <methodRestriction>.

<methodNameGuarantee>

The name of the method to have guaranteed precedence. Each traffic path has different identifiers, see Network Gatekeeper Traffic Path Reference.

<reqLimit>

The number of requests to be guaranteed over the time period given in <timeperiod>.

<timePeriod>

The timeperiod to apply the guarantee, given in milliseconds.

<methodRestrictions>

Optional.

This tag is used for restricting the number of method requests an application is allowed to do over a short time period, the short time period is referred to as a rate, typically spanning a few seconds. A longer time period, referred to as a quota, typically spans several days.

Note: The <methodRestrictions> tag is ignored for mobile-originated traffic.

One <methodRestrictions> tag, including one or more <methodRestriction> tags, is needed for each method that should have restricted usage. Only one <methodRestrictions> tag is allowed.

Below is an example with usage restrictions both for quotas and rates.

Listing 9-4 Example of a usage restriction
<methodRestrictions>
	<methodRestriction>
		<methodName>putMessage</methodName>
		<rate>
			<reqLimit>5</reqLimit>
			<timePeriod>1000</timePeriod>
		</rate>
		<quota> 
			<qtaLimit>600</qtaLimit>
			<days>3</days>
			<limitExceedOK>true</limitExceedOK>
		</quota>
	</methodRestriction>
	<methodRestriction>
		<methodName>putMmMessage</methodName>
		<rate>
			<reqLimit>5</reqLimit>
			<timePeriod>1000</timePeriod>
		</rate>
		<quota> 
			<qtaLimit>600</qtaLimit>
			<days>3</days>
			<limitExceedOK>true</limitExceedOK>
		</quota>
	</methodRestriction>
</methodRestrictions>

The example above specifies the usage restrictions for the methods putMessage and putMmMessage. The usage restriction for the short time period is 5 requests per second (5 requests divided by 1000 milliseconds). The usage restriction for the longer time period, the quota, is 600 requests over a 3 day period.

If the application does not have any usage restrictions within the allowed methods, the whole <restriction> tag should be deleted or commented out.

The most restrictive limit is always enforced, so if a restriction in a service provider level SLA is more restrictive than a restriction defined in an application level SLA, the service provider level SLA is the one being enforced.

<methodRestriction>

Contains restrictions for a method in the application-facing interface. Encapsulates the tags:

<methodName>

The name of the method to have restrictions on. Each traffic path has different identifiers, see Network Gatekeeper Traffic Path Reference.

<rate>

This tag defines the maximum number of requests to be guaranteed over a short time period, rate.

The <rate> tag contains two sub-tags:

<quota>

This tag defines the maximum number of requests over a longer time period.

The counters associated with the quota are reset at the beginning of each time period.

The <quota> tag contains the tags:

<methodAccess>

Optional.

This tag is used to block the application from accessing one or more methods in the service capability. If the application is allowed to access all methods, the <methodAccess> tag should be omitted.

This tag encapsulates one or more <blacklistedMethod> tags.

<params>

This tag is used to either allow or deny certain parameters values to be provided by applications.

The <params> tag can encapsulate one or more <methodParameters> tags, each containing a <methodName>, <parameterName>, <parameterValues> and <acceptValues> tag.

In the example below, the parameter Content-type is allowed to contain only the parameter values text/application and text/plain for the method sendMessageReq. No other values for this parameter are allowed.

Listing 9-5 Example of <params>
<params>
	<methodParameters>
		<methodName>sendMessageReq</methodName>
		<parameterName>Content-type</parameterName>
		<parameterValues>text/application text/plain</parameterValues>
		<acceptValues>true</acceptValues>
	</methodParameters>
</params>

<methodParameters>

Encapsulates the <methodName>, <parameterName>, <ParameterValue> and <acceptValues> tag.

<requestContext>

Encapsulates one or more <contextAttribute> tags.

A <contextAttribute> tag contains one <attributeName> and one <attributeValue> tag.

A plug-in can retrieve the value specified in <attributeValue> using the name specified in <attributeName>.

Note: The plug-in must implement the functionality for fetching the value by name, see Extension Toolkit - Developer's Guide for more information.
Listing 9-6 Example of <requestContext>
<requestContext>
  <contextAttribute>          
    <attributeName>com.bea.wlcp.wlng.plugin.sms.testName1</attributeName>
    <attributeValue>testValue1</attributeValue>
  </contextAttribute>
  <contextAttribute>
    <attributeName>com.bea.wlcp.wlng.plugin.sms.testName2</attributeName>
    <attributeValue>testValue2</attributeValue>
  </contextAttribute>
</requestContext>

 


SLA tags for individual traffic paths

Parlay X 2.1 Third Party Call (BC)

<maxNoOfActiveCalls>

This tag is used to specify the maximum number of active calls the application is allowed to have. If there is no restriction, the tag is deleted or commented out.

<maxNoOfCallLegsInCall>

This tag is used to specify the maximum number of call legs in a call the application is allowed to have. If there is no restriction, the tag should be deleted or commented out.

Backwards compatible Parlay X 2.1 Short Messaging and MultiMedia Messaging (BC)

<persistMessage>

This tag is used to define if incoming, mobile originated messages are to be stored in the mailbox.

The tag contains a boolean value; true or false.

If true, incoming messages are stored in the mailbox and applications can poll for and list messages stored in the mailbox. When a message arrives to the inbox, an acknowledgement will be sent to the network that the message has been delivered.

If false, incoming messages are not stored in the mailbox. Applications will not be able to poll for messages. When a messages is delivered to an application, an acknowledgement will be sent to the network that the message has been delivered.

The tag is optional, and if omitted the behavior is the same as defining the tag value as false. For performance reasons it is better to omit the tag than to set it to false.

The tag is valid for application level SLAs only.

<allowedCharging>

This tag is used for specifying the allowed charging amounts for SMSes. The amounts are specified as a string with spaces between the allowed amounts.

<maxMessageSize>

This tag is used for specifying the maximum number of characters allowed in a SMS message. This size can be larger than 160.

<allowedMmCharging>

This tag is used for specifying the allowed charging amounts for MMSes. Specified as a string with spaces between the allowed amounts.

<maxMmMessageSize>

This tag is used for specifying the maximum size of a MMS message in bytes.

<allowedContentTypes>

This tag is used for specifying which content types are allowed in MMS messages. The allowed content types are specified as a string with spaces between the values representing the content types. The content types are specified as MIME types (Type/Subtype), for example image/gif.

<allowedEncodingTypes>

This tag is used for specifying which content types are allowed in SMS messages sent from an application. The allowed content types are specified as a string with spaces between the values representing the content types.

The content types are specified as:

Parlay X 2.1 Payment

<currencyRestriction>

This tag is used to specify the currencies allowed in the transactions handled by the charging service. The currency code is specified according to the ISO 4217 standard. To avoid too small and too large amounts in transactions, it is possible to specify a maximum and a minimum amount for each currency.

One <allowedCurrency> tag (including the <currencyCode>, <minAmount>, and <maxAmount> tags) is needed for each allowed currency. If all currencies are allowed, the tag is deleted or commented out.

Listing 9-7 Example of usage of <currencyRestriction>
<currencyRestriction> <!-- Optional -->
  <allowedCurrency>
    <currencyCode>USD</currencyCode>
    <minAmount>1</minAmount>
    <maxAmount>10</maxAmount>
  </allowedCurrency>
  <allowedCurrency>
   <currencyCode>EUR</currencyCode>
   <minAmount>1</minAmount>
   <maxAmount>10</maxAmount>
   </allowedCurrency>
</currencyRestriction>

Extended Web Services WAP Push

<maxMessageSize>

This tag is used for specifying the maximum number of bytes allowed in a message.

<allowedContentTypes>

This tag is used for specifying which content types are allowed in a message. The allowed content types are specified as a string with spaces between the values representing the content types.

The content types are specified as MIME types (Type/Subtype), for example image/gif.

For MIME multipart messages, the individual body parts are not evaluated. In order to allow multipart messages, multipart/mixed and/or multipart/related should be included in this tag.

 


SLA attributes for individual traffic paths

For information about SLA attributes to set for the individual traffic paths, see Network Gatekeeper Traffic Path Reference.


  Back to Top       Previous  Next