LN Personalization Migrator Move user personalizations between LN environments

Procedure

Copying personalizations from one LN environment to another when the user names differ between the two tenants. Steps 1–4 run in the old environment, steps 5–6 here, and steps 7–11 in the new environment.

Why this tool is needed. A personalization export stamps the owning user ID into every record. Import it unchanged into a tenant where that user ID does not exist and the personalizations land on a user nobody signs in as — so they never appear. Rewriting the ID first is what makes a straight export/import work across tenants.

Before you start

Old environment — export

  1. Start Export Personalizations (ttaad7201m000)

    Sign in to the old tenant and start the session. It opens as a wizard: the first page sets what to export, and each following page narrows whose personalizations to take.

  2. First page — choose what to export

    Set the page exactly like this:

    Export Range of Roles clear Leave cleared. You are exporting a user, not a role.
    Export Specific Roles clear Leave cleared.
    Personalizations to Export ✓ Session Personalizations
    ✓ Report Personalizations
    ✓ Menu Personalizations
    ✓ Conditional Formatting
    ✓ Filters
    clear Graphs — tick this too if the user has personalized graphs.
    Specific Selection
    the second column of check boxes
    ✓ Tick it next to every type you ticked on the left. This is what gives you a page per type on which to set the user range — without it you cannot restrict the export to one user.
    Enum Domain Coloring clear Leave cleared. It is a tenant-wide setting, not a user personalization.
    Export to › File ✓ ticked, with a path like ${BSE}/appdata/Personalization/n072.zip. Name the file after the user so you can tell exports apart later.
    Export to › Download ✓ Tick it. This is what puts the zip on your machine. Without it the file is written to the application server only, and you have to fetch it with File Manager (ttfmafileman).
    Additional File clear Leave cleared.

    Click Next.

  3. Following pages — set the user on every one

    You now get one page per type you ticked. The critical part is the same on all of them: under Level, tick User and put the same user name in both the From and the To box. Leave Role and Company cleared.

    The one mistake to avoid. If the From and To user boxes do not both hold the user name, you export either nothing or everybody. Check both boxes on every page before clicking Next.
    PageSet the ranges to
    Personalization Session From blank, To ZZZZZZZZZZZZZ.
    Type From blank, To the last entry in the list (Toolbar Settings) — that spans every personalization type.
    Level › User: n072 to n072.
    Report Report From blank, To zzzzzzzzzzzzz.
    Variant From blank, To ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.
    Level › User: n072 to n072.
    Menu Menu From blank, To ZZZZZZZZZZZZZ.
    Level › User: n072 to n072.
    Conditional Formatting Session From blank, To ZZZZZZZZZZZZZ.
    Company: leave All cleared, range -001 to 9999.
    Level › User: n072 to n072.
    Filter Session From blank, To ZZZZZZZZZZZZZ.
    Level › User: n072 to n072.

    On the last page click Finish. The zip downloads, and a copy is written to the path you set on the first page.

    Several users at once: put the first user name in the From box and the last in the To box, on every page. The range is alphabetical, so it will also pick up anyone whose name sorts between the two. That is fine — the converter lists everybody it finds and lets you tick only the users you actually want, dropping the rest from the import file.

  4. Check what you got

    The zip holds one file per package — personalization_user_tc_01, personalization_user_td_01, personalization_user_tp_01 and so on — plus ExportConfiguration_h, the header LN writes to record what was exported. They have no file extension. That is normal; do not rename them or repackage the zip.

    If you cleared Download on the first page, open File Manager (ttfmafileman), browse to ${BSE}/appdata/Personalization/ and download the zip from there.

Here — rewrite the user names

  1. Convert the zip

    On the Converter page, upload the zip. The tool reads the user names out of it and adds a row for each one.

    Choose who goes into the import file. Every user starts ticked. Untick anyone you do not want and their records are cut out of the output entirely — not merely left alone. A range export of eighty users can be cut down to the ten you actually want: use Select none, then tick those ten. The filter box narrows a long list by ID or name, and the counter shows how many are included.

    Untick rows — do not delete them. A deleted row leaves that user neither renamed nor excluded, so their personalizations land in the new tenant still carrying their old user ID. An unticked row is properly cut out. If any user in the zip ends up on neither list, the summary names them — do not ignore that warning.

    Fill in the new user name for each one you kept. Excluded rows need nothing.

    Optionally connect either tenant with its .ionapi file:

    • The new tenant turns the right-hand column into a search box — type a person’s name and pick them from the list. Anything not in that tenant is flagged before you convert.
    • The old tenant labels each ID from the zip with who it belongs to, so you can confirm you exported the right person.

    Both are optional; you can type the IDs instead. The names come from each tenant’s Infor Federation Services directory, whose lnUser property is the LN login code — the same value as tccom001.loco on the employee record.

    With both tenants connected each row is matched for you, on surname:

    One person with that surname Filled in automatically, highlighted, and marked “check it”.
    Several share the surname Narrowed by first name. If that leaves one person, it is filled in the same way.
    Still more than one Left empty, with the field offering just those people — click it and choose.
    The name carries a trailing number Tried again without it, so “Alex Carter1” still finds Alex Carter.
    Nobody matches Left empty and marked, so you search for them yourself.
    Check every auto-filled row. A shared surname is not proof of the same person, and the old and new IDs frequently belong to different people. An auto-filled ID is highlighted until you confirm or change it; typing or picking anything yourself clears the mark.

    Check the summary before downloading. The replacement count should be in the hundreds for a well-used account; zero or a handful usually means a user name was mistyped or has different casing.

  2. Employee numbers in saved filters

    A saved filter often searches on an employee — a sales representative, a buyer, a planner. Employee numbers do not survive a tenant change: the same person is employee 1150 in one tenant and NFRIEDM in another. Left alone, those filters arrive pointing at somebody who does not exist.

    With both tenants connected the tool translates them for you. Set the LN company below the tenant pickers first — employee numbers are company-specific, and both tenants are read with that company. It defaults to 2100.

    Employees are paired two ways: through the user mapping you just made, and, for people you are not migrating at all, by matching the two employee tables on name. A name two people share is never guessed — it is reported instead.

    “could not be matched to an employee in the new tenant” That person has no counterpart in the new tenant. The filter comes across unchanged and will return nothing until it is re-saved.
    “does not translate” A value on a field the tool does not treat as an employee reference. Review it; if it really is one, ask for the field to be added.
    “Removed n saved filters” See below — these were deliberately left out.
    Some filters are removed on purpose. A filter that searches a user or employee with anything other than is equal to — a range, a greater-than, a “starts with” — cannot survive the renumbering, because 1150 becoming NFRIEDM destroys any ordering or spelling the filter relied on. Carrying it over would produce a filter that looks right and quietly returns the wrong rows, so the whole filter is dropped and named in the summary. Re-save those in the new tenant. Filters on ordinary fields are untouched whatever they ask for.

New environment — import

  1. Upload the converted zip

    Sign in to the new tenant and open File Manager (ttfmafileman). Upload the converted zip — the zip itself, do not extract it — into the folder you use for imports, for example:

    ${BSE}\appdata\personalizations_119\

    Naming the folder after the source tenant keeps successive migrations apart. Create a backups\ subfolder inside it at the same time — the next step writes the rollback file there, and the import fails if the folder does not exist.

    ${BSE}\appdata\personalizations_119\backups\

  2. Import Personalizations (ttaad7202m000) — first page

    Point the session at the file, and always take the backup:

    Import (from) › File Selected, with the full path to the zip you just uploaded, e.g. ${BSE}\appdata\personalizations_119\personalizations_nfriedm.zip
    Additional File clear Leave cleared.
    Options › Backup File ✓ Tick this. Give it a path in the backups\ subfolder, e.g. ${BSE}\appdata\personalizations_119\backups\personalizations_nfriedm_backup.zip
    The backup is your undo. It captures the target user’s personalizations as they are now, before the import overwrites them. If the import goes wrong, import that backup file to put the user back exactly as they were. Skip it and there is no way back. Give every run its own backup file name so one does not overwrite another.
  3. Second page — choose what to import

    This mirrors the export. Set it the same way:

    Import Roles clear Leave cleared, along with Include Personalizations beneath it. You are importing a user, not a role.
    Data to Import ✓ Session
    ✓ Report
    ✓ Menu
    ✓ Conditional Formatting
    ✓ Filters
    clear Graphs — tick it only if you ticked it on the export.
    Specific Selection ✓ Tick it next to every type you ticked on the left, exactly as on the export. This is what gives you a page per type on which to set the user range.
    Enum Domain Coloring clear Leave cleared.
  4. Following pages — set the NEW user on every one

    One page per type, as on the export. Under Level, tick User and enter the new user name — the name the converter produced, not the original. Leave Role and Company cleared.

    Check every page. These pages do not all carry the user name forward — it is easy to set it on the first two and leave an old value sitting on Conditional Formatting or Filter. Any page still holding the wrong name silently imports nothing for that type, and you will not find out until the user says half their screens are missing.
    PageSet the ranges to
    Personalization Session From blank, To ZZZZZZZZZZZZZ.
    Type From blank, To Toolbar Settings (the last entry).
    Level › User: the new name in both boxes.
    Report Report From blank, To zzzzzzzzzzzzz.
    Variant From blank, To ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.
    Level › User: the new name in both boxes.
    Menu Menu From blank, To ZZZZZZZZZZZZZ.
    Level › User: the new name in both boxes.
    Conditional Formatting Session From blank, To ZZZZZZZZZZZZZ.
    Company: leave All cleared, range -001 to 9999.
    Level › User: the new name in both boxes.
    Filter Session From blank, To ZZZZZZZZZZZZZ.
    Level › User: the new name in both boxes.

    Where a page offers Copy Company Personalizations to, leave it on The Same Companies and leave Copy to Specific Companies empty.

    Importing more than one user? A single name in both boxes imports that one person and silently ignores everyone else in the file. Open the range instead: leave From blank and set To to ZZZZZZZZZZZZZZZZ on every page, which takes every user the file contains. That is safe here because the converter already removed everyone you did not tick — the file holds exactly the people you chose, and nobody else.

    On the last page (Filter) click Finish, then review the import log for rejected records before telling anyone it is done.

  5. Verify with the user

    Have the user sign out and back in, then open a session they had personalized — one with an obviously changed grid or a saved filter is the fastest check. Personalizations are applied at session start, so a session left open from before the import will still show the old layout.

If something does not look right

SymptomLikely cause
The converter reports zero replacements The old user name is wrong or the casing differs. Use the names the tool detected in the file rather than typing one in.
The export zip is far smaller than expected A From/To user box was left empty on one of the wizard pages, so that personalization type exported nothing. Re-run the export and check both boxes on every page.
The export contains users you did not ask for The User From and To boxes held different names, so LN took the whole alphabetical range. Expected — untick the ones you do not want and they are removed from the import file.
Someone's personalizations arrived who should not have They were left ticked in step 4. Re-convert from the original export with only the intended users selected, and re-import.
Import runs clean, but the user sees nothing Most often the new user name was wrong, so the records imported onto a user nobody signs in as. Re-check the target name in the new tenant and convert again from the original export.
Only some types came across — menus but no filters, say A page of the import wizard still held the wrong user name, so that type matched nothing. Re-run the import with the new name set on every page.
Only one person arrived out of several The User From and To boxes held a single name. Re-run with the range open — From blank, To ZZZZZZZZZZZZZZZZ — on every page.
The import made things worse Run Import Personalizations (ttaad7202m000) again, pointing at the backup file written in step 7. That restores the target user to exactly how they were before. This only works if you ticked Backup File.
The import fails writing the backup The backups\ subfolder does not exist yet. Create it in File Manager (ttfmafileman) and run the import again.
Import rejects records The session does not exist in the target environment, or is at a different release. Personalizations for sessions that are not installed cannot be imported.
Only some sessions came across A Session or Report range was narrower than you thought. Re-export with the ranges set as in the table above.
Personalization menu options are missing for the user Allow Application Personalization is not selected in the user's data template (ttams1110m000).

Notes

Session codes verified against Infor LN UI User Guide (Cloud and On-premises) and the Infor Enterprise Server Administration Guide (Cloud). Wizard settings taken from a live ttaad7201m000 run.