Deleted TEIs still show up in Tracker Capture

Hi,
Can someone confirm the correct procedure to permanently delete TEIs in bulk? (I am on version 2.37)

I am using this request url format with method as DELETE: https://SERVERURL/api/trackedEntityInstances/KlD8A2zfB45

Payload is as shown below:
Screenshot from 2023-03-29 16-14-16

After sending the payload, I have Permanently removed soft deleted TEIs in Data Administration.

But same TEIs still show up the tracker program.

Also I tried viewing the TEIs through API (with DELETE=true parameter):
https://serverurl/api/trackedEntityInstances/?ou=gCy9vwHt7OS&ouMode=SELECTED&program=nWVg79AxDSv&fields=:all&skipPaging=true&Deleted=true

And this shows the TEIs with deleted: false

Not sure if I’m doing something wrong.

Hello @Quoda What’s the response of your DELETE request. Did you do this in Postman? Please share the response.

Also i feel the request you are using is not the right way (refer screenshot below) and Tracker - DHIS2 Documentation

@jthomas Thanks for the quick response.

Yes I am making use of Postman.
from the docs you shared, I changed the method to POST, and used the ‘strategy’ parameter. After this I have removed soft deleted TEIs in maintenance but still the TEIs can be found in capture.

Below is the response:

< !DOCTYPE HTML >
< html class = “loginPage”
dir = “ltr” >
< head >
< title > DHIS 2 < /title> < meta name = “description”
content = “DHIS 2” >
< meta name = “keywords”
content = “DHIS 2” >
< meta http - equiv = “Content-Type”
content = “text/html; charset=UTF-8” >
< link rel = “shortcut icon”
href = “…/…/favicon.ico” / >
< script type = “text/javascript”
src = “…/javascripts/jQuery/jquery.min.js” > < /script> < script >
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader(
‘X-Requested-With’, {
toString: function() {
return ‘’;
}
}
);
}
}); < /script> < script type = “text/javascript”
src = “…/javascripts/login.js” > < /script> < link type = “text/css”
rel = “stylesheet”
href = “…/css/widgets.css” >
< link type = “text/css”
rel = “stylesheet”
href = “…/css/login.css” >
< link type = “text/css”
rel = “stylesheet”
href = “…/…/api/files/style/external” / >
< /head>

< body class = “loginPage” >
< h1 style = “display:none” > DHIS 2 < /h1> < div style = “display:none” > DHIS 2 < /div> < div >
< img id = “flagArea”
src = “…/flags/dhis2.png” >
< span id = “titleArea” > DHIS 2 < /span> < /div> < div id = “loginField” >
< div id = “loginArea” >
< div id = “bannerArea” >
< a href = “http://www.dhis2.org” > < img src = “…/…/api/staticContent/logo_front”
style = “border:none” > < /a> < /div>

< form id = “loginForm”
action = “…/…/dhis-web-commons-security/login.action”
method = “post” >
< div >
< div id = “signInLabel” > Sign in < /div> < div > < input type = “text”
id = “j_username”
name = “j_username”
placeholder = “Username”
required > < /div> < div > < input type = “password”
id = “j_password”
name = “j_password”
autocomplete = “off”
placeholder = “Password”
required > < /div> < div >
< input type = “checkbox”
name = “2fa”
value = “2fa”
id = “2fa” / > < label id = “2FaLabel” > Login using two factor authentication < /label> < input type = “code”
id = “2fa_code”
name = “2fa_code”
placeholder = “Two factor authentication code”
hidden readonly >
< /div> < /div> < div id = “submitDiv” >
< input id = “submit”
class = “button”
type = “submit”
value = “Sign in” >
< /div> < /form>

< /div> < /div> < div id = "footerArea" >
< div id = "leftFooterArea"

class = “innerFooterArea” >
< span id = “poweredByLabel” > Powered by < /span>DHIS 2  < /span> < /div> < div id = “rightFooterArea”
class = “innerFooterArea” >
< span id = “applicationRightFooter” > < /span> < select id = “localeSelect”
onchange = “login.localeChanged()”
style = “margin-left: 30px” >
< option value = “” > [Change language] < /option> < option value = “ar” > Arabic < /option> < option value = “ar” > Arabic(Egypt) < /option> < option value = “ar” > Arabic(Iraq) < /option> < option value = “ar” > Arabic(Sudan) < /option> < option value = “bn” > Bangla < /option> < option value = “bi” > Bislama < /option> < option value = “my” > Burmese < /option> < option value = “ckb” > Central Kurdish < /option> < option value = “zh” > Chinese < /option> < option value = “zh” > Chinese(China) < /option> < option value = “cs” > Czech < /option> < option value = “da” > Danish < /option> < option value = “nl” > Dutch < /option> < option value = “en” > English < /option> < option value = “fr” > French < /option> < option value = “in” > Indonesian < /option> < option value = “in” > Indonesian(Indonesia) < /option> < option value = “km” > Khmer < /option> < option value = “rw” > Kinyarwanda < /option> < option value = “lo” > Lao < /option> < option value = “mn” > Mongolian < /option> < option value = “ne” > Nepali < /option> < option value = “nb” > Norwegian Bokmål < /option> < option value = “or” > Odia < /option> < option value = “ps” > Pashto < /option> < option value = “pt” > Portuguese < /option> < option value = “pt” > Portuguese(Brazil) < /option> < option value = “ro” > Romanian < /option> < option value = “ru” > Russian < /option> < option value = “es” > Spanish < /option> < option value = “sv” > Swedish < /option> < option value = “tg” > Tajik < /option> < option value = “tet” > Tetum < /option> < option value = “uk” > Ukrainian < /option> < option value = “ur” > Urdu < /option> < option value = “uz” > Uzbek < /option> < option value = “vi” > Vietnamese < /option> < option value = “prs” > prs < /option> < /select> < /div> < /div> < /body> < /html>

Please double check the authentication!

3 Likes

Confirming that authentication was the problem here!

After setting the auth right, I used this request URL format with method as DELETE with the attached payload in my initial query, and it worked!: https://SERVERURL/api/trackedEntityInstances/KlD8A2zfB45

2 Likes