### v0.3.9
* Added RSM platform component routes for message types RAN_CONNECTED, RAN_RESTARTED, RAN_RECONFIGURED, RIC_RES_STATUS_REQ,RIC_RES_STATUS_RESP and RIC_RES_STATUS_FAILURE
* xApp manager interface changes for Subscription Request API

### v0.3.8
* Adding docs and updating release notes for routing manager

### v0.3.7
* Fix routes for RIC_ENDC_X2_SETUP_REQ, RIC_ENDC_X2_SETUP_RESP and RIC_ENDC_X2_SETUP_FAILURE

### v0.3.6
* Routing Manager is more resilient to missing components
* Put in order the message types

### v0.3.5
* Added platform route to send RIC_SCTP_CLEAR_ALL message to implement big red button.
* Added E2_TERM_INIT and RIC_SCTP_CONNECTION_FAILURE message type routes.

### v0.3.4
* The following tools made available in the final docker image: iputils-ping, net-tools, curl and tcpdump

### v0.3.3
* Introduced delete API over REST interface for subscriptions.

### v0.3.2
* Minor code changes due to appmgr/rtmgr api differences
* Doc update
* UT fixes 

### v0.3.1
* Removed "rte" route types and made all routes to construct of "mse" literal. 

### v0.3.0
* Introduced platform-specific routes: basic components (e2term, ueman, subman, e2man) are stored in a json file (example in manifests/rtmgr/rtmgr-cfg.yaml)
* Introduced subscription add functionality: /ric/v1/xapp-subscriptions endpoint is active, on a POST method it generates endpoint specific mse routing table entries

### v0.2.0
* Introduced http rest functionality
* A way to get intial xapp data from xapp manager while booting the routing manager
* A way to create a sinple webhook registration in the xapp-manager to listen on updates abpout changes in xapps

### v0.1.1
* Changes in swagger API definition
* UTs for SBI, SDL and RPE modules
* New message types according to RMR

### v0.1.0
* Introduces NNGPush SBI module
* Bugfixes in argument handling
* different RMR policy generator for Push and Pub communication

### v0.0.3
* RMR Policy Engine has been refactored to handle receiving groups properly
* Debugging feature has been added
* Multi level logging
* A complex JSON file has been added to xApp Manager to test new behavior

### v0.0.2
* RTMGR (Routing Manager) implementation in Golang 
* Updated project folder structure
* Integration manifests

### v0.0.1
* Initial version of Routing Manager for CI/CD pipeline 
* Dummy solution: still has no real routing capability
* Container is based on the _**tx**_ version of [admin xApp] which already implements [RMR library]
