How can I receive UE connectivity and registration event?

Hi, I used k8s to deploy free5gc. Now I want to make a consumer for receiving notification of amf.
Subscription request like that:

POST /amf/namf-evts/v1/subscriptions

Body:

{
    "subscription": {
        "subsChangeNotifyCorrelationId": "1",
        "notifyCorrelationId": "1",
        "eventNotifyUri": "http://consumer-svc/amf/event/notify/",
        "subsChangeNotifyUri": "http://consumer-svc/amf/event/subsChange/notify/",
        "nfId": "2fd4b853-6a6b-4236-81c2-4713cf5870fc",
        "eventList": [
            {
                "type": "REGISTRATION_STATE_REPORT",
                "immediateFlag": true
            },
            {
                "type": "CONNECTIVITY_STATE_REPORT",
                "immediateFlag": true
            }
        ],
        "anyUE": true,
        "supi": "imsi-208930000000004"
    }
}

But when I used ueransim to reconnect, my consumer didn’t receive any notification.
Is there any problem in my request body? How can I receive UE connectivity and registration event?

Same problem for me, subscription goes well but I do not receive any event notification at the specified URI. It would be nice to have an example of subscription with event trigger :smile:

Hi, did you manage to achieve notifications? I’m trying to do the same…

@grzegorzpnk
In my opinion event notification is not implemented (or it is not working), i’m not code expert btw. My solution, since I have just to realize a proof of concept, is to use subscriptions with ONE_TIME trigger. In practice I do polling to the NF I need. Here there is an example:

URL: http://127.0.0.18:8000/namf-evts/v1/subscriptions

Body request

{
“subscription”: {
“eventList”: [
{
“type”: “PRESENCE_IN_AOI_REPORT”,
“immediateFlag”: true,
“areaList”: [
{
“presenceInfo”: {
“trackingAreaList”: [
{
“plmnId”: {
“mcc”: “208”,
“mnc”: “93”
},
“tac”: “000001”
}
]
},
“sNssai”: [{
“sd”: “010203”,
“sst”: 1
},
{
“sd”: “112233”,
“sst”: 1
}]
}
],
“udmDetectInd”: true,
“presenceInfoList”: {},
“maxResponseTime”: 0,
“targetArea”: {
“taList”: [
{
“plmnId”: {
“mcc”: “208”,
“mnc”: “93”
},
“tac”: “1”
}
]
}
}
],
“anyUE”:true,
“notifyCorrelationId”: “504”,
“nfId”: “a42e3a30-deb8-4510-8915-ca639aacb3d7”,
“options”: {
“trigger”: “ONE_TIME”
}
}
}

The AMF is responding with the list of devices connected (in this case just one)

Response

{
“subscription”: {
“eventList”: [
{
“type”: “PRESENCE_IN_AOI_REPORT”,
“immediateFlag”: true,
“areaList”: [
{
“presenceInfo”: {
“trackingAreaList”: [
{
“plmnId”: {
“mcc”: “208”,
“mnc”: “93”
},
“tac”: “000001”
}
]
}
}
]
}
],
“eventNotifyUri”: “”,
“notifyCorrelationId”: “504”,
“nfId”: “a42e3a30-deb8-4510-8915-ca639aacb3d7”,
“anyUE”: true,
“options”: {
“trigger”: “ONE_TIME”
}
},
“subscriptionId”: “6”,
“reportList”: [
{
“type”: “PRESENCE_IN_AOI_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:26:39.058089875Z”,
“anyUe”: true,
“supi”: “imsi-208930000000007”
}
]

Then I ask for some device’s parameters with a new request (notice that IMSI is the same of the previous response). I used EURANSIM to similate device connection. Notify URI is useless since i’m asking for ONE_TIME that by definition is not creating a real subscription but just give data once in the responce.

Body Request 2

{
“subscription”: {
“subsChangeNotifyCorrelationId”: “1”,
“notifyCorrelationId”: “1”,
“eventNotifyUri”: "“iHadToRemoveLink/”,
“subsChangeNotifyUri”: "“iHadToRemoveLink”,
“nfId”: “a42a2a30-deb8-4510-8915-ca6a9aacb3a3”,
“eventList”: [
{
“type”: “REGISTRATION_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “CONNECTIVITY_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “LOSS_OF_CONNECTIVITY”,
“immediateFlag”: true
},
{
“type”: “LOCATION_REPORT”,
“immediateFlag”: true
},
{
“type”: “TIMEZONE_REPORT”,
“immediateFlag”: true
},
{
“type”: “REGISTRATION_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “ACCESS_TYPE_REPORT”,
“immediateFlag”: true
},
{
“type”: “REACHABILITY_REPORT”,
“immediateFlag”: true
}
],
“supi”: “imsi-208930000000007”,
“options”: {
“trigger”: “ONE_TIME”,
“expiry”: “2022-05-19T18:53:01.558Z”
}
}
}

and finally the resp

Response 2

{
“subscription”: {
“eventList”: [
{
“type”: “REGISTRATION_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “CONNECTIVITY_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “LOSS_OF_CONNECTIVITY”,
“immediateFlag”: true
},
{
“type”: “LOCATION_REPORT”,
“immediateFlag”: true
},
{
“type”: “TIMEZONE_REPORT”,
“immediateFlag”: true
},
{
“type”: “REGISTRATION_STATE_REPORT”,
“immediateFlag”: true
},
{
“type”: “ACCESS_TYPE_REPORT”,
“immediateFlag”: true
},
{
“type”: “REACHABILITY_REPORT”,
“immediateFlag”: true
}
],
“eventNotifyUri”: "“iHadToRemoveLink”,
“notifyCorrelationId”: “1”,
“nfId”: “a42a2a30-deb8-4510-8915-ca6a9aacb3a3”,
“subsChangeNotifyUri”: “iHadToRemoveLink”,
“subsChangeNotifyCorrelationId”: “1”,
“supi”: “imsi-208930000000007”,
“options”: {
“trigger”: “ONE_TIME”,
“expiry”: “2022-05-19T18:53:01.558Z”
}
},
“subscriptionId”: “7”,
“reportList”: [
{
“type”: “REGISTRATION_STATE_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”,
“rmInfoList”: [
{
“rmState”: “REGISTERED”,
“accessType”: “3GPP_ACCESS”
},
{
“rmState”: “DEREGISTERED”,
“accessType”: “NON_3GPP_ACCESS”
}
]
},
{
“type”: “CONNECTIVITY_STATE_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”,
“cmInfoList”: [
{
“cmState”: “CONNECTED”,
“accessType”: “3GPP_ACCESS”
},
{
“cmState”: “IDLE”,
“accessType”: “NON_3GPP_ACCESS”
}
]
},
{
“type”: “LOSS_OF_CONNECTIVITY”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”
},
{
“type”: “LOCATION_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”,
“location”: {
“nrLocation”: {
“tai”: {
“plmnId”: {
“mcc”: “208”,
“mnc”: “93”
},
“tac”: “000001”
},
“ncgi”: {
“plmnId”: {
“mcc”: “208”,
“mnc”: “93”
},
“nrCellId”: “000000010”
},
“ageOfLocationInformation”: -431730491,
“ueLocationTimestamp”: “2022-06-03T09:20:06.176424105Z”
}
}
},
{
“type”: “TIMEZONE_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”
},
{
“type”: “REGISTRATION_STATE_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”,
“rmInfoList”: [
{
“rmState”: “REGISTERED”,
“accessType”: “3GPP_ACCESS”
},
{
“rmState”: “DEREGISTERED”,
“accessType”: “NON_3GPP_ACCESS”
}
]
},
{
“type”: “ACCESS_TYPE_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”,
“accessTypeList”: [
“3GPP_ACCESS”
]
},
{
“type”: “REACHABILITY_REPORT”,
“state”: {
“active”: false
},
“timeStamp”: “2022-06-03T09:34:33.761586021Z”,
“supi”: “imsi-208930000000007”
}
]
}

@Bingdoal Hello , please give the entire log and pcap so that we can debug more easily , thanks.