Skip to main content
avillanueva
23-Emerald I
23-Emerald I
December 15, 2023
Solved

Leftover publish_params.xml files in my old vault folder

  • December 15, 2023
  • 1 reply
  • 904 views

Millions of files and there is bound to be some errors. 6 in fact which blocks me removing an old vault.  They are all "public_params.xml" files that show up in the vault but will not move. I ran WTContenVerify and it reports back Business object missing. So I get that I have a valid FVItem but the object its tied to is done, a Derived Image. Some related articles on this topic:

https://www.ptc.com/en/support/article/CS121641?source=search

https://www.ptc.com/en/support/article/CS110809?source=search

https://www.ptc.com/en/support/article/CS280885?source=search

It sounds like I have to prune the FVItem, Holder2Content, ApplicationData related to these entries. Anyone been down this road before? Tips appreciated. Was hoping there was a WinRU to fix this.

Best answer by mmeadows-3

Yep, you need to prune.  These will work in your use case, but shouldn't blindly apply them to all cases of missing business object.

 

-- Using internal_id from the vaulting report in delete statements...

delete from ApplicationData where idA2A2 in (select htc.idA3B5 from ApplicationData ad, HolderToContent htc where ad.idA2A2=htc.idA3B5 and htc.idA3A5 in (comma separated list of {internal_id} values));
delete from HolderToContent where idA2A2 in (select idA2A2 from HolderToContent where idA3A5 in (comma separated list of{<internal_id} values));
 
I get missing business objects regularly with published files.  It is really rare on other object types.

1 reply

16-Pearl
December 15, 2023

Yep, you need to prune.  These will work in your use case, but shouldn't blindly apply them to all cases of missing business object.

 

-- Using internal_id from the vaulting report in delete statements...

delete from ApplicationData where idA2A2 in (select htc.idA3B5 from ApplicationData ad, HolderToContent htc where ad.idA2A2=htc.idA3B5 and htc.idA3A5 in (comma separated list of {internal_id} values));
delete from HolderToContent where idA2A2 in (select idA2A2 from HolderToContent where idA3A5 in (comma separated list of{<internal_id} values));
 
I get missing business objects regularly with published files.  It is really rare on other object types.
avillanueva
23-Emerald I
23-Emerald I
December 15, 2023

Voila! Which is french for... "aaand then i found out..."

avillanueva_0-1702676064495.png

 

avillanueva
23-Emerald I
23-Emerald I
March 18, 2026

Adding a bit more to this. Since I mostly see this with DerivedImages, I was looking for a query to identify what WContentVerify was showing as a missing business object. It laymans terms, its where there exists a FVItem, Application Data and Holder2Content but there business object is missing. I can deal with 2 or 3 missing items but what if it was thousands. This query can be used to discover them and where they are:

select H. IDA3A5 DERIVEDIMAGE, H.IDA2A2 HOLDER, A.IDA2A2 APPDATA, F.IDA2A2 FILEITEM, FO.NAME FOLDER, V.NAME VAULT
from HolderToContent H, applicationdata A, FVITEM F, FVFOLDER FO, FVVAULT V
where F.ida2a2 = A.IDA3A5 AND
A.IDA2A2 = H.IDA3B5 AND
H.ida3a5 NOT IN (SELECT IDA2A2 FROM DERIVEDIMAGE) AND
h.classnamekeyroleaobjectref = 'wt.viewmarkup.DerivedImage' AND
f.ida3a4 = FO.IDA2A2 AND
fo.ida3a5 = V.IDA2A2

Specific for Derived Images yes. I ran WContentVerify on my main vault but it threw DB errors which led to false positives, or it reported things were ok when they were not. I knew of 3 objects from my library vault but not the main vault. Narrowing my scan to just folder 15, sure enough, there they were. I would much prefer a clean delete statement that I can validate the list of objects I am removing as opposed to doing this 1 by 1. Per CS412772, we need to delete the HolderToContent and Application Data object row. FVItem will be cleaned up by removing unreferenced files. 

 

image.png