Database Transporter error: "[810029] Object of type Translations does not exist in database or you do not have the relevant viewing permissions." when importing custom translations

Hi all,

I'm trying to create a Romanian language pack for the Identity Manager web portal, in two steps:

  1. Starting from the official French language pack
    1. For each csv file in the language pack, I've replaced the culture with "ro-RO" and replaced the French translation with Romanian translation;
    2. The translation was done automatically using Microsoft Translator, starting from the English column in each csv file;
    3. I have then imported the resulted Romanian language pack using the Language Tool in the Designer;
    4. Everything went fine here, I have the web portal in Romanian.
  2. Because not all automatic translations made sense in Romanian, some manual adjustments were needed
    1. I've made these using the Language Tool in Designer and I see the corrections in the web portal;
    2. I've saved all of them under a specific change label, with the intention to create a database transport file for the respective change label;
    3. I've created the transport file for the change label with the following options: "Close change label after export" - unchecked, "Add dependent objects to transport file" - checked; the transport file was successfully generated.

I'm now trying to test my Romanian language pack, step 1 followed by step 2, on an online demo environment. When importing the database transport file I'm getting the error below. Note that I've worked steps 1 & 2 on our local environment (version 8.1.3.102), while on the online demo environment we have version 8.1.5.339.

As we need to transport these modifications to a client where we have 8.1.5 installed, my question is how do I do it? Is there anything I'm missing about creating/importing the database transport file? Is there any other way of transporting the manual adjustments I've made in step 2 above?

All your help is much appreciated!

Bogdan

The full error report:

Import 'C:\Users\Administrator\Downloads\Transport_MSSQL_SQL_IAM_OneIM_20220218_0439_RO_lang_pack_manual_adjustments.zip' failed.

at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)

at DBTransporter.PageProgress.workerProgress_DoWork(Object sender, DoWorkEventArgs e)

at DBTransporter.Import.pageImportCommon_DoWork(Object sender, DoWorkEventArgs e)

at VI.Transport.Transport.SaveToDatabase(TransportParts tParts)

at VI.Transport.Transport.HandleException(ITransportTask sender, Exception ex, ISingleDbObject dbObject)

Import 'C:\Users\Administrator\Downloads\Transport_MSSQL_SQL_IAM_OneIM_20220218_0439_RO_lang_pack_manual_adjustments.zip' failed.

[810358] Object with key <Key><T>DialogMultiLanguage</T><P>CCC-DBC534E88D876449A47F3D5F663DE941</P></Key> does not exist in database, you do not have the relevant viewing permissions, or an error occured.

at VI.DB.Entities.EntityPatch.<ApplyAsync>d__47.MoveNext()

at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

--- End of stack trace from previous location where exception was thrown ---

at VI.DB.EntitySourceExtensions.<GetAsync>d__3.MoveNext()

[810029] Object of type Translations does not exist in database or you do not have the relevant viewing permissions.

at VI.DB.EntitySourceExtensions.<GetAsync>d__3.MoveNext()

at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

--- End of stack trace from previous location where exception was thrown ---

at VI.DB.Entities.PermissionsEntitySource.<GetAsync>d__11.MoveNext()

at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

--- End of stack trace from previous location where exception was thrown ---

at VI.DB.Entities.EntitySourceImpl.<GetAsync>d__11.MoveNext()

Parents
  • The reason you are seeing this error is that the translation entries (DialogMultiLanguage) are getting different GUIDs anytime you install the Langauge-Pack CSV files.So the entries in the customer database have different GUIDs than the ones in your database. That is the reason why the transport package is failing.

    I think you need to correct your CSV files based on the entries you have changed in the Designer.

  • Thanks for your answer, Markus!

    Manually correcting the csv files is not really an option, because I've made hundreds of manual adjustments. I need a different solution, an automated one.

    Do you think that, on my local environment, when importing the language pack in step 1, before committing the changes to database, a solution would be to mark the modifications with the same change label as in step 2, and then generate a transport file that would include all modifications in steps 1&2, that I would import on the customer database, without also importing the csv files in the customer database? Would this avoid having different GUIDs in the two steps?

  • Hi Bogdan,

    if the language pack wasn't imported into the customer database, this might be an option. If the language pack was already imported in the customer database you will end up with duplicate translations.

    In addition, you could try to use the SQL Window in Object Browser to export your translations as csv and update your csv files this way.

  • Thanks for your answer, Andreas!

    The language pack was not imported in the customer database, wanted to test the whole process first. So I'll try this and keep you posted.

    For using the SQL Windows in the Object Browser I'd need some help, this is the tool I've used the least. But maybe I won't need it.

  • Tried what I was thinking, but is not working. I've reset the VMs on my local environment to the state where I didn't have anything related to Romanian. And, of course, because I need to import again the Romanian language pack in step 1, I have the different GUIDs problem when trying to import the db transport file in step 2.

    Therefore, any help please with exporting the translations using the Object Browser?

  • You would collect the translations with a query like this and save the result with menu SQL >> Export result.

    select dt.TableName, dc.ColumnName, dmlen.EntryKey,dmlen.EntryValue, dmlro.EntryValue
    	from DialogMultiLanguage dmlen
    		join DialogMultiLanguage dmlro on dmlen.UID_DialogColumn = dmlro.UID_DialogColumn and dmlen.EntryKey = dmlro.EntryKey
    		join DialogColumn dc on dmlen.UID_DialogColumn = dc.UID_DialogColumn
    		join DialogTable  dt on dt.UID_DialogTable = dc.UID_DialogTable
    	where 
    		dmlen.UID_DialogCulture = 'QBM-CULT-en-US' 
    		and dmlen.EntryValue is not null
    		-- and dmlen.UID_DialogMultiLanguage like 'UCI-%' --- << for every Module
    		and dmlro.UID_DialogMultiLanguage like 'CCC-%' -- << for all custom translations
    		and dmlro.UID_DialogCulture = 'QBM-CULT-ro-RO'
    	order by 1,2,3

    Use ether the "for every Module" or the "for all custom translations" line in the where clause.
    When using the "for every Module" you need to run the query once for every module.

    In the resulting csv files you need to replace the csv heading with
    @@Culture:ro-RO

Reply
  • You would collect the translations with a query like this and save the result with menu SQL >> Export result.

    select dt.TableName, dc.ColumnName, dmlen.EntryKey,dmlen.EntryValue, dmlro.EntryValue
    	from DialogMultiLanguage dmlen
    		join DialogMultiLanguage dmlro on dmlen.UID_DialogColumn = dmlro.UID_DialogColumn and dmlen.EntryKey = dmlro.EntryKey
    		join DialogColumn dc on dmlen.UID_DialogColumn = dc.UID_DialogColumn
    		join DialogTable  dt on dt.UID_DialogTable = dc.UID_DialogTable
    	where 
    		dmlen.UID_DialogCulture = 'QBM-CULT-en-US' 
    		and dmlen.EntryValue is not null
    		-- and dmlen.UID_DialogMultiLanguage like 'UCI-%' --- << for every Module
    		and dmlro.UID_DialogMultiLanguage like 'CCC-%' -- << for all custom translations
    		and dmlro.UID_DialogCulture = 'QBM-CULT-ro-RO'
    	order by 1,2,3

    Use ether the "for every Module" or the "for all custom translations" line in the where clause.
    When using the "for every Module" you need to run the query once for every module.

    In the resulting csv files you need to replace the csv heading with
    @@Culture:ro-RO

Children
  • Thanks Andreas!

    What should I do with the resulted file? Import it using the Language Tool in Designer?

    I'm asking because the csv files in the language pack are split per module, while this one contains records from all modules (I haven't used the module where clause, didn't un-comment it).

  • It depends on your use case. If it is a custom translation just for this one customer, importing this new file (via Language Tool in Designer) should be suffice.
    If you want to provide translations to multiple customers with different sets of installed modules, you might want to split the translations into multiple files based on there module of origin.

  • Hi all,

    Sorry for my late reply, I was off due to some personal issues.

    I've succeeded transporting the language pack to the client environment, automatically, including my manual corrections. What I did was the following:

    • using Andreas' script & instructions I've exported csv files for each module;
    • it was a bit strange that not all modules had records in the database, even if in step 1 described in my 1st post here I've had Romanian translations for all modules;
    • however, for the modules with no export data I've used the original csv files, containing the automated Romanian translations;
    • the result is a Romanian language pack folder containing 37 csv files, with my manual corrections;
    • I've imported the language pack in an online demo environment and it looked fine; the same on the customer environment.

    Thanks all for help, much appreciated!

    Regards,

    Bogdan