Http integration join comes with first uplink?

Hi, brocaar

Let me start by thank you for your great work ! :slight_smile:

We are using chirpstack and currently using it as our internal test server for LoRaWan.
The Chirpstack have a http integration pointing to an endpoint running on a python flaskserver.

What we have noticed is that when we send a join request from an end-device we get immediately a join accept from chirp. However, there is no http push on /join. But on the first uplink data sent from the end-device we get a /join push together with the /uplink.

I have test this on requestbin.com just to be sure…and get the following

9.43.14 AM POST /uplink
9.40.23 AM POST /uplink
9.37.33 AM POST /uplink
9.34.44 AM POST /join
9.34.44 AM POST /uplink

I dont know if this is the expected flow ?
I was expecting a http push on /join right away and not as a attachment to an uplink

thanks in advance

That is expected behavior. For the NS receiving the first uplink from the device is the confirmation that it was activated with the (new) security context.

This is because in LoRaWAN 1.1, a device can perform a rejoin-request, to which the NS (can) respond with a join-accept. After this rejoin join-accept the NS keeps the old and new security context of the device. In case the device does not receive the rejoin join-accept (e.g. packet-loss) it will continue to operate with the old security context (and the end-application does not receive a /join event). When the device does switch its security context based on the rejoin join-accept, the NS will detect this (as it knows both the old and new context) and will also switch to the new security context. In this case the end-application will receive a /join notification.

Thank you for the clarification. This makes sens, the problem for us is that we are trying to use the end-application interface for test and validation of lorawan stack on an end-deive :slight_smile: .
In this case to pass a test upon a successful join reception at NS.
Is there any other way in which we can immediately detect a join request ?

Else, we can do a work around by immediately send an uplink…this will also work.

Anyways thanks for your time