Anomaly Detection (AD) xApp is used to detect the anomalous UEs present in the network.
It works with Traffic Steering xApp.

Here is the RMR communication diagram among the xApps:

Demo Video

Delivery Status

Only the Integration PTL should edit the delivery status table to track the release validation progress




OTFOAMNONRTRICRICPRICAPPO-DUO-CUTest ResultNotes
Deployment Artifacts

Docker Container







AD container is locally built.

xApp Descriptors








E2E FlowsTS_ANOMALY and TS_ANOMALY_ACK








Onboarding and Deployment of xApps:

The Use case involves two different xApps:
a) Traffic Steering (TS) xApp (AT&T)
b) Anomaly Detection (AD) xApp (HCL)

xApps can be cloned from nexus repository using the following command:
TS xApp:
      git clone "https://gerrit.o-ran-sc.org/r/ric-app/ts"
AD xApp:
      git clone "https://gerrit.o-ran-sc.org/r/ric-app/ad"


Currently, we are building the images locally after cloning it.
Once the Staging and  Release images are available, we can use the below commands.
Build and push the docker image for both AD xApp and TS xApp using the following:

TS xApp:
    docker build -t nexus3.o-ran-sc.org:10002/o-ran-sc/ric-app-ts:1.0.13 .
    docker push  nexus3.o-ran-sc.org:10002/o-ran-sc/ric-app-ts:1.0.13

AD xApp:
    docker build -t nexus3.o-ran-sc.org:10002/o-ran-sc/ric-app-ad:0.0.1 .
    docker push  nexus3.o-ran-sc.org:10002/o-ran-sc/ric-app-ad:0.0.1


Each of these xApps have a descriptor in their gerrit repo under the xapp-descriptor/ directory.
None of them have xapp specific controls and therefore no individual json schema.
Here are the URLs for each which can be included in HTTP POST call to onboard tool.
TS xApp:
https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/ts.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD
AD xApp:
https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/ad.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD

It is required to deploy TS xApp followed by AD xApp.

Preparing an xApp for onboarding:
Here we are preparing for API calls into the xApp On-Boarder by providing the locations of the xApp descriptors.
echo '{"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/ts.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD" }' > onboard.ts.url
echo '{"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/ad.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD" }' > onboard.ad.url

Onboarding xApps:
Invoke the API calls into the xApp On-boarder, providing it the locations of the xApp descripters.
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" --header 'Content-Type: application/json' --data-binary "@./onboard.ts.url"
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" --header 'Content-Type: application/json' --data-binary "@./onboard.ad.url"

Checking the on-boarded charts:
curl --location --request GET "http://$(hostname):32080/onboard/api/v1/charts"

Deploying xApp:
Deploy the xApps by invoking the xApp Manager's API.
Note that the names of the xApp to be deployed must match with what the on-boarder has.
Once receiving the deploy API call, the xApp Manager will make API call into Helm/Kubernetes to deploy the xApp's Helm chart.
The Routing Manager is also involved if the xApp needs to process RMR messages, – it will complete the routes and send out route updates.
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "trafficxapp"}'
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "ad"}'


Note: Use the latest Routing Manager supporting the new message types (TS_ANOMALY_UPDATE and TS_ANOMALY_ACK).