← Back to team overview

dhis2-devs team mailing list archive

Re: Deletion of Program and all associated objects via API v 2.25

 

Hi Jason,

How can I programatically determine this via the Web API? Are
DataDimensionItems related to favourites? If so, I had asked the dev list
about the querying and deletion of favourites via the Web API back in
February and had created these three JIRA tasks:

https://jira.dhis2.org/browse/DHIS2-1174 - Show more meaningful message to
user when a favourite cannot be loaded due to missing data elements
https://jira.dhis2.org/browse/DHIS2-1175 - Add ability to query for
Favourites by their corresponding data elements and indicators via the API
https://jira.dhis2.org/browse/DHIS2-1176 - Add ability to delete Favourites via
the API

>From my limited testing it looked like the inclusion in a favourite didn't
prevent the deletion of data elements, but only made the favourite invalid.

Any other help on this issue would be appreciated as I'm now blocked in
being able to complete the functionality to delete programs.

Thanks,

Lorill

On Tue, May 30, 2017 at 12:02 AM, Jason Pickering <
jason.p.pickering@xxxxxxxxx> wrote:

> Hi Lorill,
>
> Is the data element linked to a chart, pivot or map?
>
> Regards,
> Jason
>
>
> On Mon, May 29, 2017 at 9:58 PM, Lorill Crees <lcrees@xxxxxxxxxx> wrote:
>
>> Hi,
>>
>> Further to this, for some of our programs we are unable to delete
>> programdataelements via the Web API due to the following error:
>>
>> ERROR: update or delete on table "programdataelement" violates foreign
>> key constraint "fk_datadimensionitem_programdataelementid" on table
>> "datadimensionitem" Detail: Key (programdataelementid)=(541878) is still
>> referenced from table "datadimensionitem".
>>
>> What do I need to do to be able to delete these programdataelements? I
>> have already deleted all the events and tracked entity instances prior to
>> deleting programdataelements. I have even tried rerunning analytics prior
>> to deleting.
>>
>> Please let me know. Thanks,
>>
>> Lorill
>>
>> On Fri, May 26, 2017 at 2:33 PM, Lorill Crees <lcrees@xxxxxxxxxx> wrote:
>>
>>> Hi,
>>>
>>> We have been working on functionality to delete full Programs and all
>>> associated data and metadata via the Web API using:
>>>
>>> Version:
>>> 2.25
>>> Build revision:
>>> ee7e61b
>>> Build date:
>>> 2017-05-19 12:47
>>>
>>> The instance being used is assuming that attributes and data elements
>>> are specific to a particular program/program stage and will not be reused
>>> across programs.
>>>
>>> I wanted to check to see if there are any other objects we need to worry
>>> about for deletion that we may be missing.
>>>
>>> This is our methodology in order of execution, all via the Web API:
>>>
>>>    1. Delete Program and Program Stage Data
>>>       1. delete all program stage events
>>>       2. delete all tracked entity instances
>>>    2. Delete Program and Program Stage Metadata
>>>       1. delete all related program indicators
>>>       2. delete all related program rules
>>>       3. delete all related program rule variables (I'm not sure why
>>>       these aren't deleted automatically via the program rule deletion)
>>>       4. delete programDataElements (is it correct that these are
>>>       generated by analytics?)
>>>       5. delete all related indicators for programStage data elements
>>>       6. delete underlying data elements
>>>       7. delete related option sets and related options
>>>       8. delete programTrackedEntityAttributes
>>>       9. delete related trackedEntityAttributes
>>>       10. delete related option sets and related options
>>>    3. Delete Program and Program Stages
>>>       1. delete program stages
>>>       2. unassign program from all user roles (we note that the dataset
>>>       deletion API call takes care of this step but the program deletion API call
>>>       doesn't and throws an error if we miss this step)
>>>       3. delete program
>>>
>>> I see some things in the program payload such as:
>>>
>>>    - "notificationTemplates": [],
>>>    - "translations": [],
>>>    - "userGroupAccesses": [],
>>>    - "attributeValues": [],
>>>    - "validationCriterias": [],
>>>
>>> Do any of these need to be explicitly deleted in order to delete a
>>> program or will they cascade? Are there any other associated objects I
>>> haven't mentioned that we need to delete? So far we've been implementing on
>>> a trial and error basis.
>>>
>>> Please let me know if there are any other considerations we should be
>>> incorporating into our logic.
>>>
>>> Thanks,
>>>
>>> Lorill
>>> --
>>> Lorill Crees
>>> Project Leader / Senior Developer
>>> 2Paths Solutions Ltd. <http://www.2paths.com>
>>>
>>> lcrees@xxxxxxxxxx
>>> skype: lorill2paths
>>> (604) 689-4123 x 15 <(604)%20689-4123>
>>>
>>
>>
>>
>> --
>> Lorill Crees
>> Project Leader / Senior Developer
>> 2Paths Solutions Ltd. <http://www.2paths.com>
>>
>> lcrees@xxxxxxxxxx
>> skype: lorill2paths
>> (604) 689-4123 x 15 <(604)%20689-4123>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
>
> --
> Jason P. Pickering
> email: jason.p.pickering@xxxxxxxxx
> tel:+46764147049 <+46%2076%20414%2070%2049>
>



-- 
Lorill Crees
Project Leader / Senior Developer
2Paths Solutions Ltd. <http://www.2paths.com>

lcrees@xxxxxxxxxx
skype: lorill2paths
(604) 689-4123 x 15

Follow ups

References