BAM Portal Availability Monitor

Microsoft.BizTalk.Server.2016.BAMPortal.AvailabilityMonitor (UnitMonitorType)

The availability monitor for the BAM portal

Knowledge Base article:

Summary

BAM portal is used by the business end users to monitor Key Performance Indicators (KPIs), which measures progress toward a business goal, as well as other information about their business process.

The health of BAM portal depends on health of the processes in BAM Portal website and BAM Application Pool.

Causes

This commonly happens in the following situations: web server is not running or the application pool is disabled.

Resolutions

Ensure the web server is running and the application pool is correctly configured.

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateTrue

Member Modules:

ID Module Type TypeId RunAs 
ScriptDS DataSource Microsoft.BizTalk.Server.2016.Monitor.BAMPortal.DataSource Default
ScriptPA ProbeAction Microsoft.BizTalk.Server.2016.Monitor.BAMPortal.ProbeAction Default
FilterNotRunning ConditionDetection System.ExpressionFilter Default
FilterRunning ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Interval SecondsThis is the interval (in seconds) at which the monitor is run.
LogSuccessEventbool$Config/LogSuccessEvent$Log Success EventAn event is logged based on successful completion of the monitor when value is set to 'true'.
TimeoutSecondsint$Config/TimeoutSeconds$Timeout SecondsThis is the timeout (in seconds) after which execution of the monitor is terminated if not yet completed.

Source Code:

<UnitMonitorType ID="Microsoft.BizTalk.Server.2016.BAMPortal.AvailabilityMonitor" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="SuccessState" NoDetection="false"/>
<MonitorTypeState ID="ErrorState" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element name="IntervalSeconds" type="xsd:int"/>
<xsd:element name="TargetServer" type="xsd:string"/>
<xsd:element name="TargetWebSite" type="xsd:string"/>
<xsd:element name="LogSuccessEvent" type="xsd:boolean"/>
<xsd:element name="TimeoutSeconds" type="xsd:int"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="LogSuccessEvent" Selector="$Config/LogSuccessEvent$" ParameterType="bool"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<MonitorImplementation>
<MemberModules>
<DataSource ID="ScriptDS" TypeID="Microsoft.BizTalk.Server.2016.Monitor.BAMPortal.DataSource">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<TargetServer>$Config/TargetServer$</TargetServer>
<TargetWebSite>$Config/TargetWebSite$</TargetWebSite>
<LogSuccessEvent>$Config/LogSuccessEvent$</LogSuccessEvent>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
<ProbeAction ID="ScriptPA" TypeID="Microsoft.BizTalk.Server.2016.Monitor.BAMPortal.ProbeAction">
<TargetServer>$Config/TargetServer$</TargetServer>
<TargetWebSite>$Config/TargetWebSite$</TargetWebSite>
<LogSuccessEvent>$Config/LogSuccessEvent$</LogSuccessEvent>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
<ConditionDetection ID="FilterRunning" TypeID="System!System.ExpressionFilter">
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>1</Pattern>
</RegExExpression>
</Expression>
</ConditionDetection>
<ConditionDetection ID="FilterNotRunning" TypeID="System!System.ExpressionFilter">
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>0</Pattern>
</RegExExpression>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID="SuccessState">
<Node ID="FilterRunning">
<Node ID="ScriptDS"/>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="ErrorState">
<Node ID="FilterNotRunning">
<Node ID="ScriptDS"/>
</Node>
</RegularDetection>
</RegularDetections>
<OnDemandDetections>
<OnDemandDetection MonitorTypeStateID="SuccessState">
<Node ID="FilterRunning">
<Node ID="ScriptPA"/>
</Node>
</OnDemandDetection>
<OnDemandDetection MonitorTypeStateID="ErrorState">
<Node ID="FilterNotRunning">
<Node ID="ScriptPA"/>
</Node>
</OnDemandDetection>
</OnDemandDetections>
</MonitorImplementation>
</UnitMonitorType>