Data Steward Team Guide

Supply Chain Systems · Internal Use Only

Document Decision Guide

Find the action you need, then use the template or method listed. Where two options are shown, either one works. Updated 01.07.2026

💡
Updating multiple items? Use the RMS Download form instead of editing items one at a time on the front end.

Building & Adding Items

These all go on the Item Induction Template.

If you need to…Use this
Create an itemItem Induction Template
Add transaction RINsItem Induction Template
Add a supplierItem Induction Template
Add a GTINItem Induction Template or Front-End (RMS v16)
Delete GTIN(s)Item Induction Template
Add dimensionsItem Induction Template or Front-End (RMS v16)
Add location(s) to an existing RINItem Induction Template (Location tab only)
Create a consignment itemItem Induction Template (must update column C)
Create a drop ship itemItem Induction Template (must update column BH)

Item & Supplier Updates

Edit on the front end for a single item, or use RMS Download for several.

If you need to…Use this
Edit description, short description or secondary descriptionRMS Download or Front-End (RMS v16)
Edit dimensionsRMS Download or Front-End (RMS v16)
Add commentsRMS Download or Front-End (RMS v16)
Update brandRMS Download or Front-End (RMS v16)
Update suggested retail (MSRP)RMS Download or Front-End (RMS v16)
Update VPNRMS Download or Front-End (RMS v16)
Update primary supplier at supplier levelRMS Download or Front-End (RMS v16)
Update drop ship flag (called Direct Ship Flag in RMS v16)RMS Download or Front-End (RMS v16)
Update consignment rateRMS Download or Front-End (RMS v16)
Update default UOPRMS Download or Front-End (RMS v16)
Update Ti/HiRMS Download or Front-End (RMS v16)
Update rounding levelRMS Download or Front-End (RMS v16)
Update supplier color (called Diff 1 in RMS v16)RMS Download only
Update inner and case packRMS Download only. Warehoused items must be sent to ROADS.

UDAs

If you need to…Use this
Add UDAsRMS Download or Front-End (RMS v16)
Update UDAs (List of Values only)RMS Download or Front-End (RMS v16)
Delete UDAs (List of Values only)RMS Download or Front-End (RMS v16)
Remove the BOPIP UDA from clearance items (weekly)Mass Change via Item List (see Clearance BOPIP UDA Removal)

Location-Level Updates

These all go on the Manual Maintenance Form.

If you need to…Use this
Update location statusManual Maintenance Form
Update primary suppliers at location levelManual Maintenance Form
Update quantity keyManual Maintenance Form
Update store order multiple at location levelManual Maintenance Form

Seasons & Ticket Types

If you need to…Use this
Add, edit or delete seasons/phasesFront-End (RMS v16) or Mass Change via Item List
Add, edit or delete ticket typeFront-End (RMS v16) or Mass Change via Item List

Hierarchy Changes

These run on a fixed schedule.

If you need to…Use this
Re-class RIN(s) to a different dept/class/subclassRe-classification Template. Done the first full week of every month; see Item Reclassification.
Create, add or edit a dept/class/subclassMerchandise Hierarchy Template. Done twice a year.

Email Responses

Canned / template email responses used by the Data Steward Team. Each subheader below is a scenario; the text beneath it is the ready-to-send response — click the copy icon to copy it exactly as written.

⚠

Action Required

25
ACTION REQUIRED for Add Web Loc(s):
Email Response
Upon initial review of the submitted Item Induction Location form, please review the following field(s):

Items are missing the following Web requirements:
- Missing BOPIP UDAs

Please submit an update to Add the BOPIP UDAs along with your request to Add Web locs.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Update Primary Supplier: — Suppliers not attached to items
Email Response
Upon initial review of the submitted Manual Maintenance Location form, please review the following:

Please check/validate suppliers are attached to the item(s).

Please submit an Add Supplier Item Induction form along with your manual maintenance form.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Update Primary Supplier: — Incorrect Supplier entered on form
Email Response
Upon initial review of the submitted Manual Maintenance Location form, please review the following:

Please check/validate supplier # is correct on your form as this supplier is not attached to the item(s).
-You have supplier #698140691 on your manual maintenance form but your form is indicating DeCA which is supplier #835949082

Please submit an Add Supplier Item Induction form (if necessary) along with your manual maintenance form or update your manual maintenance form and resubmit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED CHECKER NOT BEING USED: — Doesn't show template ran though checker
Email Response
Good morning and are you having checker issues?  Your template was not ran through the checker prior to submitting this template.

Please run your template through the checker and save that copy or advise if you’re having issues.  If you’re having issues with the checker, please provide the error you are receiving.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED:
Email Response
Upon initial review of the submitted Item Induction form, please review the following field(s):

**List invalid fields**

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Building a New Brand Request:
Email Response
Upon initial review of your Brand Request Form,  please review the following field(s):

- Web Brand (column C) – please check and validate Spelling is correct.
- You have FAUDI SPADA on the form but the website shows it as FEVDI SPADA
- Web Brand/UDA Display (column D) – please check that this is populated correctly – see the notes for this field below:
- This column needs to show the Vendors brand standard and how the Brand should be displayed on MNE.com's search bar results and copy - i.e. it be all CAPS, Proper, miXed and also should include any necessary characters like accents, etc
- You have this in All Caps FEUDI SPADA – is that correct or should it be proper case?

Please review, make any necessary corrections and re-submit.  If you attached an item induction template to build items, please confirm that is still accurate and correct (in case changes were needed for the Brand) and reattach with your Brand Request form as well.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Location Tab (duplicate IFID records):
Email Response
Upon initial review of the submitted Item Induction form, please review the following field(s):

- Please review your Location Tab.  You have duplicate records - for each Item Family ID, you have it listed multiple times – this will cause the system to throw errors.  You only need the item Family ID once for each unique Location record.
- Highlighted in red & bolded the records you should have on your template.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Add Trans (Diff/Size Issues):
Email Response
***View in HTML***

Upon initial review of the submitted Item Induction form, please review the following field(s):

- Please review your size code you are trying to utilize – you cannot change your size code, it must match the size code of the Parent item you are trying to attach this Tran to
- Your induction template is requesting size code 006S be used but the Parent # 19745338 you are trying to attach it to is built with a size code of 036S.  This will error on us when we induct it into RMS.
- It looks like you requested size 25 be added to 006S but it may have needed to be added to 036S.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Add Trans (Diff/NRF Issues):
Email Response
***View in HTML***

Upon initial review of the submitted Item Induction form, please review the following field(s):

- Please review your NRF color code you are trying to utilize – you cannot reuse a color code if it’s already been used for that size code
- Please review the highlighted records – we show this color code already being used for this Parent(s).  Please update your color code to one that is not being utilized and resubmit.
- We have attached a report that shows what is currently being used for those Parents

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Brands, Item Desc, & Loc Tab:
Email Response
***View in HTML***

Upon initial review of the submitted Item Induction form, please review the following field(s):

We see you ran your template through the checker, did you not receive any errors?

- 5 ERROR: Qty  Brands has an incorrect value. Please fix and rerun script.
- (Must be in the validation file. – Did not see Hawaiian King Chocolate built in our system or anything with Hawaiian King.  If you need this built please submit on the Web Brand form that is on the HUB and DST will build it for you.

- Once the Brand is built or you have the correct Brand, please review your item descriptions again and make sure they are consistent.  You have Hawaiian Brand Chocolate for the first 3 records and then Hawaiian King (without the chocolate for the last 2 records.  You need to use the brand correctly for all Item Descriptions
- Location Tab: there is no data on this tab.  Please populate or not locations will be attached to your items.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for cost higher than retail:
Email Response
***View in HTML***

Upon initial review of the submitted Item Induction form, please review the following field(s):

WARNING: Qty 1 Costs are higher than Retail (Col AG and BN). Please validate. Is this correct?  You have a cost of $740 and a retail of $6.99.  This would impact your financials for markups/markdowns, etc.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Dimension Field(s):
Email Response
Upon initial review of the submitted Item Induction form, please review the following field(s):

Please review your Gross Weight field (column CA).  This needs to be a number with no other data included.  You have several that have the UOM included in the field.  This will error upon induction.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
Missing Web Requirements for Adding Loc(s):
Email Response
***View in HTML***

Upon initial review of Item Induction template to Add Loc(s), we noticed you have Web loc(s) (781 and/or 9870) on your Location Tab.  Please keep in mind, if you are adding 781, you MUST add 9870; and items MUST have all Web Requirements attached before we can process your request.

Items are missing the following Web requirements:
- Missing BOPIP UDAs
- Brand
- VPNs if vendor provided
Here is the link to the HUB that provides the Web Requirement Instructions and have attached a soft copy as well.

Please review your items and submit a download form to add any missing Web requirements and resubmit all template to DST for processing.

If you have any questions, please let us know.

Thank you,
Data Steward Team

Or

Upon initial review of Item Induction template to Add Loc(s), we noticed you have Web loc 9870 on your Location Tab.  Why are you adding the Web Warehouse loc?  You don’t have 781 attached to this item.  Pease keep in mind, if you are adding any web loc(s) you must add both 781 and 9870, and you MUST have all Web Requirements attached before we can process your request.

NOTE:  If you just need loc 182 to resolve the pricing issue, then please resubmit without the 9870 loc so we may process.

Items are missing the following Web requirements:
- Missing BOPIP UDAs
- Brand
- VPNs if vendor provided
- Web UDA’s (
- MSRP’s (unless on the exempt list from Web Team)
Here is the link to the HUB that provides the Web Requirement Instructions and have attached a soft copy as well.

internal-link

Please review your items and submit a download form to add any missing Web requirements and resubmit all template to DST for processing.

If you have any questions, please let us know.

Thank you,
Data Steward Team
UPLOAD w/ Errors:
Email Response
Your Item Induction form received the following error(s) during the upload process with the following error(s):

Once reviewed, please correct and re-submit on the proper form.

If you have any questions, please let us know.

Thank you,
Data Steward Team
UPLOAD w/ Errors for mis-matched size group ids w/in a grouping:
Email Response
Your Item Induction form received the following error(s) during the upload process with the following error(s):

You have a mis-matched size group id for 1 of your Item Groupings.  Nots sure if they should have been grouped together or not; but you cannot have different size groups for any given Item Grouping.  We have attached your original template and have highlighted the Item Grouping and then in red showed where the size group id is different.  These 4 items did not build.

Action:  If these items should be part of this grouping then please resubmit (on a clean item induction template) the 4 items as an Add Trans utilizing the correct size group id/values.  If this is truly a unique and different item, then submit (on a clean induction template) a Create Item Family action for these 4 items.

All other items have built successfully and we have attached the BI Item report for those items.

Once reviewed, please correct and re-submit on the proper form.

If you have any questions, please let us know.
UPLOAD w/ Errors for a duplicate color code w/in a grouping:
Email Response
***View in HTML***

Your Item Induction form received the following error(s) during the upload process with the following error(s):

- This child/grandchild item already exists for item 20236711 – You duplicated a color code for the same Parent (020 – Gray).  You cannot use the same color/side combination within a single item grouping.
- We’ve attached your original induction template highlighting the item that error out and bolded in Red the fields that need to be corrected

Action: Please submit a new clean item induction template to add the missing item using the “Add Trans” Action on the Item Induction sheet and change your NRF color code to something different and use a different color name.  You cannot use Gray as you have used it for another transaction within that same grouping.  There needs to be some differentiator.  For example is a Heather Gray, Light Gray, etc.

All other items have built successfully and we have attached the BI Item report for those items.

Once reviewed, please correct and re-submit on the proper form.

If you have any questions, please let us know.

Thank you!
Data Steward Team
UPLOAD w/ Errors for invalid UDA Id value:
Email Response
Dafne,

Your Item Induction form received the following error(s) during the upload process with the following error(s):

Invalid UDA id.  Please be aware your items have been built and approved but UDA's have not been attached.  If you need the UDA(s) attached to these items, please submit a request to add these UDA's to your items.

Once reviewed, please correct and re-submit on the proper form.

If you have any questions, please let us know.
UPLOAD w/ Errors for Hierarchy not matching Parent:
Email Response
Betsy,

Your Item Induction form received the following error(s) during the upload process with the following error(s):

Please review the record highlighted in yellow and your hierarchy.  Your requested hierarchy does match the Parent hierarchy in the system.  We have attached a report that shows you the hierarchy for the Parent # you have provided.

Once reviewed, please submit a new, clean item induction template with that single record on it for processing.

If you have any questions, please let us know.

Thank you,
Data Steward Team
UPLOAD w/ Errors for Missing Sheet/Input:
Example / reference data
ItemItem DescriptionSupplier SiteCountry of SourcingWorksheetRowColumnIssue TypeIssue Description
Item_MasterErrorMissing sheet in the input file.
ErrorInvalid template. Check the sheets and/or columns in the spreadsheet used.
Email Response
***View in HTML***

Your Item Induction form received the following error(s) during the upload process with the following error(s):

Did you by chance delete any columns or try and change anything?  Please remember this template or data is very finicky so something was deleted that is causing this to error out.  Please redownload the form and make your updates again and resubmit for processing.

If you have any questions, please let us know.

Thank you,
Data Steward Team
UPLOAD w/ Errors for Updating Dimensions when no Dimensions attached:
Email Response
***View in HTML***

Your Item Induction form received the following error(s) during the upload process with the following error(s):

Error: This dimension object does not exists for the item-supplier-country of sourcing relationship.  It looks like you were trying to update dimensions for items that did not have any dimensions attached to them.

NOTE:  If you are trying to Add new dimensions to item(s) then please either submit them via an item induction template or you may update them manually on the front end (if you have completed Item Maintenance training).  Also attaching the link to our DST Document Guide that tells you how to which form(s) or use or if you can do them on the front end by Action.

internal-link

If there were multiple updates submitted, the others had no errors.

Once reviewed, please correct and re-submit on the proper form.

If you have any questions, please let us know.

Thank you,
Data Steward Team
Action Required for Case Packs w/ Whs SOH:
Email Response
Upon initial review of the submitted Item Induction form, please review/update the following.

You're requesting to change case packs but it appears one or all of them have SOH in warehouse.  ROADS handles all case pack requests for items warehouse.  Please fill out the attached form and submit to the ROADS Team

internal-link
File Name: Case Pack Request Form

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for Pack GTIN(s) that Exist in RMS:
Example / reference data
GTINPACK_NODEPTCLASSSUBCLASSITEM_DESCCREATE_DATETIME
0721400394171725433060315012Eucerin Body Asst 12pc8/08/24
0721400394241725432960315014Aquaphor Body Asst PDQ8/08/24
Email Response
***View in HTML***

Upon initial review of the submitted Pack Induction form, please review the following field(s):

Your GTINs exists in RMS already. If the all the information is the same for the packs, then you'll find your pack item information below.  If they are not correct, you will need to submit a Delete request to delete the GTIN(s) so you may rebuild the new packs.

Please review, correct and re-submit.

If you have any questions, please let us know.

Thank you,
Data Steward Team
ACTION REQUIRED for GTIN Delete (template format/submission):
Email Response
***View in HTML***

Upon initial review of the submitted Item Induction form, please review the following field(s) for your delete request:

Please make sure you are paying attention to the field(s) you are populating.  Your data is in the incorrect field, see the procedure to note that your delete request must go in the PARENT Field as this is the only field the system is looking at when processing these deletes.

Here is the link to the instructions on the HUB and have attached a soft copy as well.
internal-link
How to Submit a Delete GTIN Induction Form to DST
*Note: This is to delete GTINs out of RMS and downstream systems.

For Buying Teams:
You must provide a reason for all Delete requests in the body of the email.  DST has been tasked to track all deletes as there are downstream ramifications when we process any delete requests.  NOTE: Please Do Not put the reason in the Subject Line
Reminder/Notes:
- If the Transaction Item the GTIN is currently attached to has multiple GTINs, please make sure the GTIN being deleted is NOT flagged as primary.  If it is, you must change the primary flag to another GTIN.  This is a hard stop for RMS as the purge job will error and will delay your request as it will be sent back to you for updating.
- If your Delete should only be happening in a single system (i.e. RMSv16 Only or RMSv10 Only).  You MUST notate that in your email or the delete will automatically be processed for both systems.
- If you are requesting to delete at Parent or Trans level, please be aware the items MUST meet the purge criteria in order to delete – no transactions of any kind for 2 years àIf there are any transactions out there it is a hard stop.
- If you will be building new items with these GTINs, please DO NOT attach the new Item Induction to the Delete request email.  It must be submitted to DST separately after the delete has processed.
To delete a GTIN through the Custom Item Induction template, please follow these steps:
Email Response
- Select Action = ‘Add Item CFAS’ (Column A)
- Enter GTIN(s) or Parent/Trans to be deleted in the Parent Item (Column H) - this should be whatever level you are trying to delete (i.e. GTIN, Trans, or Parent).
- Enter Buyer Number in the Buyer (Column DK)
DO NOT POPULATE ANY OTHER FIELDS:
Email Response
- Submit and E-mail to the DST (as an Excel Macro-Enabled Workbook) with DELETE GTIN (or ITEM) Request in the Subject Line

If you have any questions, please let us know.

Thank you,
Data Steward Team
✓

Successful

17
Add Loc(s):
Email Response
NOTE: Please make sure there are no spaces after your item #(s) as it will cause issues with locs adding.

Your Item Induction form to Add Loc(s) has been successfully uploaded .  Your item/loc should be available to use within one hour, but could take up to two hours.  If you do not see your item/locs in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Add Loc(s)/Update Status:
Email Response
Your Item Induction form to Add Loc(s) has been successfully uploaded along with your manual maintenance form to update status .  Your item/loc  and status update should be available to use within one hour, but could take up to two hours.  If you do not see your item/locs in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Add Supplier/Loc(s):
Email Response
Your Item Induction form to Add Supplier(s) and Loc(s) has been successfully uploaded .  Your item/supplier & locs should be available to use within one hour, but could take up to two hours.  If you do not see your item/locs in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Update Primary Supplier:
Email Response
Your Manual Maintenance form to Update Primary Supplier has been successfully updated.  Your item/Supplier update should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Update Item/Loc Status:
Email Response
Your Manual Maintenance form to Update Status has been successfully updated.  Your item/loc update should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
RMS Download:
Email Response
Your RMS Download form has been successfully updated.  Your updates should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
NEW ITEM BUILDS:
Email Response
Your Item Induction form has been successfully uploaded with no errors. Please see the attached report to retrieve your item information. Your items should be available to use within one hour, but could take up to two hours. Please wait until your items are FULLY in V10 (Parent, Grandparent, UPCS, Locations, etc). If you do not see your items in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
QTY KEY UPDATES:
Email Response
Your request to add Qty Key to loc(s) xxx has been completed.

If you have any questions, please let us know!

Thank you!
Data Steward Team
NEW DITTY PACK BUILD:
Email Response
Your Pack  Induction form has been successfully uploaded with no errors. Please see the attached report to retrieve your item information. Your items should be available to use within one hour, but could take up to two hours. Please wait until your items are FULLY in V10 (Parent, Grandparent, UPCS, Locations, etc). If you do not see your items in v10 after four hours from receiving this email, please contact the team.

Loc 109 has been added and qty key added.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Add Supplier & Update Primary Supplier:
Email Response
Your Item Induction form to Add Supplier & Manual Maintenance form to Update Primary Supplier has been successfully updated.  Your item/Supplier update should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Add Supplier:
Email Response
Your Item Induction form to Add Supplier has been successfully updated.  Your item/Supplier update should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Add UDAs:
Email Response
Your Item Induction form to Add UDAs has been successfully updated.  Your item/UDA updates should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
RMS Download for Web Requirements & Add Web Locs:
Email Response
Your RMS Download form to Add Web Requirements has been successfully updated and your induction to add Locs has been successfully uploaded.  Your updates should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
RMS Download:
Email Response
Your RMS Download form has been successfully updated.  Your updates should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
Update SOM:
Email Response
Your Manual Maintenance form to Store Order Multiple has been successfully updated.  Your SOM updates should be available to use within one hour, but could take up to two hours. If you do not see your updates in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
SUCCESSFUL UPLOAD:
Email Response
Your Item Induction form has been successfully uploaded with no errors. Please see the attached report to retrieve your item information. Your items should be available to use within one hour, but could take up to two hours. Please wait until your items are FULLY in V10 (Parent, Grandparent, UPCS, Locations, etc). If you do not see your items in v10 after four hours from receiving this email, please contact the team.

If you have any questions, please let us know!

Thank you!
Data Steward Team
WEB BRAND REQUEST:
Example / reference data
BRAND_NAMEBRAND_DESCRIPTION
FEUDI SPADAFEUDI SPADA
Email Response
Your Web Brand request has been created.  Please use the below in the Brand Column (AN) on the Item Induction Template:

If you have any questions, please let us know.

Thank you,
Data Steward Team

***Provide Web Brand Name in ALL CAPS and the new Description***
**Copy Jenni Blythe or Web Team Member who approved changes**

SQL Query Reference

General Reference Queries

How to use these: replace the sample values (item numbers, lists, process IDs) with your own before running. YOURUSERID is your RMS user ID. Lines starting with -- are optional filters you can switch on by removing the dashes. Re-class queries are in the Item Re-Class Query Index below.

Uploads & Process Tracking

Check whether templates you uploaded have processed, and find out why one failed.

My Recent Uploads (Last 2 Days)

Lists your template uploads from today and yesterday with their process ID, description, destination and status. Run this first after uploading to see if a template processed. Replace the user ID with your own RMS user ID in uppercase.

SQL
SELECT PROCESS_ID, PROCESS_DESC, PROCESS_DESTINATION, ACTION_DATE, STATUS
FROM rms.svc_process_tracker
WHERE USER_ID = 'YOURUSERID'
  AND TRUNC(SYSDATE) - TRUNC(ACTION_DATE) <= 1
ORDER BY action_date DESC, PROCESS_ID DESC;

Today's Uploads with Full Timestamps

Shows every column of today's process tracker entries for a user, with action dates displayed to the second. Useful when you need the exact time a template ran or want to check a teammate's uploads.

SQL
ALTER SESSION SET nls_date_format = 'mm/dd/yyyy HH:MI:SS';
SELECT *
FROM rms.svc_process_tracker
WHERE USER_ID = 'YOURUSERID'
  AND TRUNC(action_date) = TRUNC(sysdate)
ORDER BY action_date DESC;

Today's Item Master Data Uploads

Lists today's uploads to the Item Master Data tables (Item Induction templates). Remove the user ID line to see everyone who is inducting templates today, or uncomment the status line to show only unprocessed (N) uploads.

SQL
SELECT *
FROM rms.svc_process_tracker
WHERE TEMPLATE_KEY = 'ITEM_MASTER_DATA'
  AND USER_ID = 'YOURUSERID'
  --AND STATUS = 'N'
  AND TRUNC(action_date) = TRUNC(sysdate)
ORDER BY PROCESS_ID DESC;

Staging Record Count by Status (Process ID)

Counts the item master staging records for one process ID by processing status, so you can see how many records have processed and how many are still pending or in error.

SQL
SELECT process$status, COUNT(1)
FROM rms.svc_item_master
WHERE process_id = '21006523'
GROUP BY process$status;

Has RMS Started Processing an Item?

Checks the item master staging table for today's records of an item that haven't finished processing (status not P). No rows means the item has processed. You can filter by process ID or creator instead of item.

SQL
SELECT *
FROM rms.svc_item_master
WHERE process$status <> 'P'
  --AND process_id = 205680
  AND ITEM = '193070986586'
  AND TRUNC(create_datetime) = TRUNC(sysdate)
ORDER BY create_datetime DESC;

Step 2 (Item/Location) Upload Status

Shows today's Step 2 item/location staging records you created that haven't finished processing. No rows means Step 2 has processed. Uncomment a line to narrow it to one item or process ID. Uses your user ID in lowercase.

SQL
SELECT *
FROM rms.nex_svc_item_loc
WHERE created_by = 'youruserid'
  --AND item = '12657293'
  --AND process_id = '205667'
  AND process_status <> 'P'
  AND TRUNC(created_date) = TRUNC(sysdate)
ORDER BY created_date DESC;

Find the Process ID for an Item

Looks up which upload (process ID) created an item, along with its parent, grandparent, description, creator and create date. Use it to find the process ID to plug into the error query below.

SQL
SELECT PROCESS_ID, ITEM, ITEM_PARENT, ITEM_GRANDPARENT, ITEM_DESC, CREATE_ID, CREATE_DATETIME
FROM rms.svc_item_master
WHERE item IN ('20328861');

Error Messages for a Failed Upload (by Process ID)

Returns the readable error text for every error on a process ID. The commented block can replace the process ID filter to search by reference number, parent or grandparent instead.

SQL
SELECT r.rtk_text,
       REPLACE(c.error_msg, '@0', '') error_message,
       c.*
FROM rms.coresvc_item_err c, rms.rtk_errors r
WHERE /*process_id IN (SELECT process_id FROM rms.svc_item_master
                       WHERE (orig_ref_no LIKE '%VALUE%'
                              OR item_parent LIKE '%VALUE%'
                              OR item_grandparent LIKE '%VALUE%'))
  AND*/ REGEXP_SUBSTR(REPLACE(c.error_msg, '@0', ''), '[^@]*') = r.rtk_key (+)
  AND process_id IN ('21650342')
ORDER BY process_id DESC, rtk_text;

Item/Supplier/Country Dimensions in Staging

Checks whether an item already has a record waiting in the item/supplier/country dimension staging table.

SQL
SELECT *
FROM rms.svc_item_supp_country_dim
WHERE item IN ('14508509');

Item & Hierarchy Lookups

Find items and check how they are built.

Look Up Items by GTIN

Returns the item master record for one or more GTINs, including the item parent and whether each GTIN is the primary reference item.

SQL
SELECT *   -- or: ITEM_PARENT, ITEM, PRIMARY_REF_ITEM_IND
FROM rms.item_master
WHERE item IN ('198566072262', '198566072279', '198566072286', '198566072293');

Vendor & Transaction Details by GTIN

Starting from a GTIN, shows its create date, dept, primary vendor, parent and transaction items with names, VPN and status.

SQL
SELECT DISTINCT TRUNC(im.create_datetime) create_date, im.dept dept, s.supplier vendor, s.sup_name vendor_name,
       im.item_grandparent parent, im.item_desc_secondary parent_name, iss.vpn vpn,
       im.item_parent transaction, im.item_desc transaction_name, im.item gtin, im.status
FROM rms.item_master im, rms.item_supplier iss, rms.sups s
WHERE im.item_parent = iss.item
  AND iss.supplier = s.supplier
  AND im.item IN ('847280052899')
  AND iss.primary_supp_ind = 'Y'
ORDER BY im.item_grandparent, im.item_parent ASC;

Item Hierarchy for an Add-Transaction Request

When a buyer submits an add transaction, shows the parent and its existing transaction items with dept/class/subclass, color, size group, size and secondary description, so you can match the new transaction to the existing setup.

SQL
SELECT im.item_grandparent AS "PARENT", im.item_parent AS "TRANSACTION", im.dept, im.class, im.subclass, im.diff_1 AS color,
       xim.diff_2 AS size_group_id, im.diff_2 AS "SIZE", im.item_desc_secondary, im.create_datetime, im.create_id
FROM rms.item_master im, (SELECT item, diff_2 FROM rms.item_master) xim
WHERE im.item_grandparent = xim.item
  AND im.item_grandparent IN ('16863505')
  --AND im.diff_1 IN ('403', '651')
ORDER BY im.dept, im.class, im.subclass, im.diff_1, xim.diff_2 ASC;

Dept / Class / Subclass of a Parent Item

Returns the department, class and subclass of the items under a parent.

SQL
SELECT dept, class, subclass
FROM rms.item_master
WHERE item_parent = '17156710';

Colors and Sizes Under a Parent

Lists each transaction item under a parent with its color code and description (diff 1) and size ID and description (diff 2). Use it to check whether a size/color combination already exists before adding one.

SQL
SELECT im.item,
       im.diff_1 AS color_code,
       d1.diff_desc AS color_desc,
       im.diff_2 AS size_id,
       d2.diff_desc AS size_desc
FROM rms.item_master im
LEFT JOIN rms.diff_ids d1 ON im.diff_1 = d1.diff_id
LEFT JOIN rms.diff_ids d2 ON im.diff_2 = d2.diff_id
WHERE im.item_parent = '19893011'   -- parent item
  AND im.item_level = im.tran_level
ORDER BY im.diff_1, im.diff_2;

Items in a Dept / Class / Subclass

Lists items in a department, class and subclass, newest first, with descriptions and who created them. Uncomment the description line to search for a word, for example items named "Display".

SQL
SELECT item, item_parent, short_desc, item_desc, create_id, create_datetime
FROM rms.item_master
WHERE dept = '280'
  AND class = '1400'
  AND subclass = '3'
  --AND item_desc LIKE '%Display%'
ORDER BY create_datetime DESC;

Classes and Subclasses in a Department

Lists every class/subclass combination set up under a department, to confirm a dept/class/subclass exists before building or re-classing.

SQL
SELECT *
FROM rms.subclass
WHERE dept = '770';

Ranging Built Items to Another Dept (e.g. 781)

For items being ranged into an already-built dept/class/subclass, pulls each parent and transaction with web description, brand, MSRP, VPN, supplier color and e-comm UDA values.

SQL
SELECT DISTINCT im.item_grandparent AS parent, im.item_parent AS transaction, im.dept, xim.item_desc_secondary AS web_desc,
       xim.brand_name AS brand, xim.mfg_rec_retail AS msrp, iss.vpn AS vpn, iss.supp_diff_1 AS supplier_color,
       uil.uda_id AS ecomm_uda, uil.uda_value AS ecomm_uda_value
FROM rms.item_master im
JOIN rms.item_supplier iss ON im.item_parent = iss.item
LEFT JOIN rms.uda_item_lov uil ON im.item_parent = uil.item
     AND uil.uda_id IN ('9630', '9631', '9632', '9627')
JOIN (SELECT item, brand_name, mfg_rec_retail, item_desc_secondary FROM rms.item_master) xim
     ON xim.item = im.item_parent
WHERE im.item_grandparent IN ('19507468', '19507466', '19507467')
  AND iss.primary_supp_ind = 'Y'
ORDER BY im.dept, im.item_grandparent, im.item_parent ASC, uil.uda_value DESC;

Item Lists & Location Lists

Check what is on an item list (SKULIST) or location list, and whether the items are set up for a supplier or locations.

Items on an Item List

Lists every item on one or more item lists (SKULISTs).

SQL
SELECT *
FROM rms.skulist_detail
WHERE skulist IN ('22430800');

Locations on a Location List

Lists every location on a location list.

SQL
SELECT *
FROM rms.loc_list_detail
WHERE loc_list = '609219';

Item List Items That Have a Supplier

Shows which items on an item list already have a given supplier attached, with the supplier name.

SQL
SELECT sd.item,
       s.supplier,
       s.sup_name
FROM rms.skulist_detail sd
JOIN rms.item_supplier isp ON sd.item = isp.item
JOIN rms.sups s ON isp.supplier = s.supplier
WHERE sd.skulist = '22420417'
  AND s.supplier = '118828241';

Item List Items Missing a Supplier

Shows which items on an item list do not have a given supplier attached, so you know which still need it added.

SQL
SELECT sd.item
FROM rms.skulist_detail sd
WHERE sd.skulist = '22490360'
  AND NOT EXISTS (
      SELECT 1
      FROM rms.item_supplier isp
      WHERE isp.item = sd.item
        AND isp.supplier = '505794');

Item List Items That Have Locations from a Location List

For every item on an item list and every location on one or more location lists, shows the item/location pairs that already exist in RMS.

SQL
SELECT sd.item,
       lld.location
FROM rms.skulist_detail sd
CROSS JOIN rms.loc_list_detail lld
WHERE sd.skulist = '22435542'
  AND lld.loc_list IN ('481320', '481311')
  AND EXISTS (
      SELECT 1
      FROM rms.item_loc il
      WHERE il.item = sd.item
        AND il.loc = lld.location
  )
ORDER BY sd.item, lld.location;

Item List Items Missing Locations from a Location List

The opposite of the query above: shows each item/location pair from the item list and location list that is not set up yet.

SQL
SELECT sd.item,
       lld.location
FROM rms.skulist_detail sd
CROSS JOIN rms.loc_list_detail lld
WHERE sd.skulist = '22430800'
  AND lld.loc_list IN ('1600005')
  AND NOT EXISTS (
      SELECT 1
      FROM rms.item_loc il
      WHERE il.item = sd.item
        AND il.loc = lld.location
  )
ORDER BY sd.item, lld.location;

Locations, Retail & Quantity Key

Check an item's locations, retail by location, primary supplier at location level, and order multiple / quantity key settings.

Count of Locations on an Item

Returns how many locations an item is ranged to.

SQL
SELECT item, COUNT(loc)
FROM rms.item_loc
WHERE item IN ('20273384')
GROUP BY item
ORDER BY item ASC;

Item Locations That Are on a Location List

Shows which locations from a location list are already attached to a single item.

SQL
SELECT il.item,
       il.loc,
       lld.loc_list
FROM rms.item_loc il
JOIN rms.loc_list_detail lld ON il.loc = lld.location
WHERE il.item = '13105994'
  AND lld.loc_list = '609219'
ORDER BY il.loc;

Location List Locations Missing from an Item

Shows which locations on a location list are not attached to a single item yet. Enter the item number in both places.

SQL
SELECT '13105994' AS item,
       lld.location AS loc,
       lld.loc_list
FROM rms.loc_list_detail lld
WHERE lld.loc_list = '609219'
  AND NOT EXISTS (
      SELECT 1
      FROM rms.item_loc il
      WHERE il.loc = lld.location
        AND il.item = '13105994'
  )
ORDER BY lld.location;

Retail by Location for a Parent Item

Lists the unit retail and selling unit retail at every location for the items under a parent. Use it to confirm a price change or check retail differences between stores.

SQL
SELECT im.item_parent, il.loc, il.unit_retail, il.selling_unit_retail
FROM rms.item_master im
JOIN rms.item_loc il ON il.item = im.item
WHERE im.item_parent = '19948102';

Primary Supplier and Status at the Location Level

Shows the primary supplier and status of an item at its locations. Swap in the commented lines to check every item on an item list, or every location on a location list, instead of a single item or location. Used to verify Manual Maintenance primary supplier updates.

SQL
SELECT item, loc, primary_supp, status
FROM rms.item_loc
WHERE item IN ('14857302')
--WHERE item IN (SELECT item FROM rms.skulist_detail WHERE skulist = '')
--AND loc IN (SELECT location FROM rms.loc_list_detail WHERE loc_list = '')
--AND loc IN ('350')
;

Item/Locations Missing the Expected Primary Supplier

Cross-checks an item list against a location list and returns each item/location whose primary supplier isn't the one expected, with order multiple, source and last update details.

SQL
SELECT sd.skulist, sd.item, lld.loc_list, il.loc, il.primary_supp, il.store_ord_mult, il.source_method, il.source_wh,
       il.last_update_datetime, il.last_update_id
FROM rms.skulist_detail sd, rms.loc_list_detail lld, rms.item_loc il
WHERE sd.item = il.item
  AND il.loc = lld.location
  AND sd.skulist IN ('20740102')
  AND lld.loc_list IN ('109220')
  AND il.primary_supp <> '91796839'
  ---AND il.store_ord_mult <> 'I'
ORDER BY sd.skulist, lld.location ASC;

Quantity Key: Store Order Multiple by Location

For a list of items at one location, shows the primary supplier, status and store order multiple spelled out (I = Inner, C = Cases, E = Eaches). Results come back in the same order as the item list you paste in, so they line up with your spreadsheet.

SQL
WITH item_order AS (
    SELECT ROWNUM AS seq,
           column_value AS item
    FROM TABLE(sys.odcivarchar2list(
        '12183476'
    ))
)
SELECT i.item,
       i.loc,
       i.primary_supp,
       i.status,
       CASE i.store_ord_mult
           WHEN 'I' THEN 'Inner'
           WHEN 'C' THEN 'Cases'
           WHEN 'E' THEN 'Eaches'
           ELSE i.store_ord_mult
       END AS store_ord_mult
FROM rms.item_loc i
JOIN item_order o ON i.item = o.item
WHERE i.loc = '715'
ORDER BY o.seq;

Quantity Key: Confirm Updates at a Location

Confirms quantity key updates for a list of items at one location. Only items whose QTY_KEY_OPTIONS is R (the expected value after the update) are returned, in the order you paste them, so any missing item still needs updating.

SQL
WITH item_order AS (
    SELECT ROWNUM AS seq,
           column_value AS item
    FROM TABLE(sys.odcivarchar2list(
        '127176',
        '537701',
        '7124146'
    ))
)
SELECT i.item,
       i.loc,
       i.qty_key_options
FROM rms.item_loc_traits i
JOIN item_order o ON i.item = o.item
WHERE i.loc = '461'
  AND i.qty_key_options = 'R'
ORDER BY o.seq;

Suppliers & Costing

Confirm suppliers exist, are attached to items, and have the right VPN, unit of purchase and country records.

Suppliers and VPNs Attached to an Item

Lists the suppliers attached to an item and the VPN for each. Add AND supplier IN ('…') to check one supplier.

SQL
SELECT item, supplier, vpn
FROM rms.item_supplier
WHERE item IN ('20328903');

Look Up a Supplier

Confirms a supplier site exists in RMS and shows its details.

SQL
SELECT *
FROM rms.sups
WHERE supplier = '107257560';

All Suppliers

Lists every supplier with its DUNS number, parent, name, status and create date.

SQL
SELECT supplier, duns_number, supplier_parent, sup_name, sup_status, create_datetime
FROM rms.sups
ORDER BY supplier;

Default Unit of Purchase (UOP)

Shows the default unit of purchase for an item and supplier, with who last updated it and when.

SQL
SELECT item, supplier, default_uop, create_datetime, last_update_id, last_update_datetime
FROM rms.item_supp_country
WHERE item IN ('13284518')
  AND supplier IN ('9207775', '8086');

Item/Supplier/Country Record

Shows the full item/supplier/country record (cost, pack sizes, Ti/Hi and more) for an item.

SQL
SELECT *
FROM rms.item_supp_country
WHERE item IN ('7465374');

Item/Supplier/Country Dimensions

Shows the live dimension records for an item. This is the same check as the staging query above, run against the live table.

SQL
SELECT *
FROM rms.item_supp_country_dim
WHERE item IN ('14508609');

UDAs, Brands & Diffs

Look up UDA values, brands and differentiator (size/color) codes.

Look Up a UDA Value

Finds a UDA value by UDA ID and value number, or by its description (swap the WHERE lines).

SQL
SELECT *
FROM rms.uda_values
WHERE uda_id = '9267'
  AND uda_value = '2';
--WHERE uda_value_desc = 'Fruitables';

Required (Mandatory) UDAs

Lists the UDA defaults flagged as required, i.e. the UDAs that must be on an item in the departments they apply to.

SQL
SELECT *
FROM rms.uda_item_defaults
WHERE required_ind = 'Y';

Look Up a Brand

Finds a brand by name. Remove the WHERE line to list every brand alphabetically.

SQL
SELECT *
FROM rms.brand
WHERE brand_name = 'OMBRE'
ORDER BY brand_name;

Look Up a Diff (Size/Color) ID

Lists differentiator IDs. Uncomment a line to search by description or by diff ID.

SQL
SELECT *
FROM rms.diff_ids;
--WHERE diff_desc = '';
--WHERE diff_id = '0000';

Which Diff Groups Contain a Diff ID

Shows the diff groups a size or color ID belongs to, or swap the WHERE line to list every ID in one diff group.

SQL
SELECT *
FROM rms.diff_group_detail dgd
--WHERE dgd.diff_group_id = ''
WHERE dgd.diff_id = '16OZ';

Item Re-Class Query Index

Note: These are the queries referenced by number (Q2, Q3…) in the Item Reclassification procedure. A copy is also saved as "Queries for Re-classes" in the Item Re-class folder.

Mandatory UDAs

Q2: UDAs on an Item List

Lists the UDA IDs and values attached to every item on an item list (SKULIST). Step 2 of the mandatory UDA check.

SQL
SELECT DISTINCT sd.item, ul.uda_id, ul.uda_value
FROM rms.uda_item_lov ul, rms.skulist_detail sd
WHERE ul.item = sd.item
  AND sd.skulist = '';

Forecasting Checks

Q3: Is a Department Forecastable?

Returns the departments in the list that have forecastable items. The destination department must match the item's forecastability.

SQL
SELECT DISTINCT dept, forecast_ind
FROM rms.item_master
WHERE forecast_ind = 'Y'
  AND Dept IN ('');

Q4: Is an Item on Forecasting?

Shows whether an item is on forecasting (active replenishment). This must match the destination department.

SQL
SELECT DISTINCT ril.dept, ril.item, item_desc
FROM rms.repl_item_loc ril, rms.item_master im
WHERE ril.item = im.item
  AND ril.item IN ('')
  AND forecast_ind = 'Y'
  AND (deactivate_date IS NULL OR deactivate_date > sysdate);

Q5: Is an Item List on Forecasting?

Shows which items on an item list are forecastable, with their current hierarchy.

SQL
SELECT sd.skulist, im.ITEM_PARENT, im.item_grandparent, im.DEPT, im.class, im.subclass, im.item_desc, im.forecast_ind
FROM rms.skulist_detail sd, rms.item_master im
WHERE sd.item = im.item_parent 
  AND sd.skulist IN ('')
  AND im.forecast_ind = 'Y';

Domains for Forecastable Departments

Lists the forecasting domains attached to departments. A destination department must be in a domain before it can be forecastable.

SQL
SELECT *
FROM rms.domain_dept
WHERE dept IN ();

Pack Components on Order

Q6: Component Items on Open Orders

Finds open purchase orders for packs that contain the item. Those POs must be closed before the component can be re-classed.

SQL
SELECT *
FROM rms.ordhead oh, rms.ordsku os, rms.packitem p
WHERE oh.order_no = os.order_no
  AND oh.status = 'A'
  AND p.pack_no = os.item
  AND EXISTS (
      SELECT 'x'
      FROM rms.packitem p, rms.item_master im
      WHERE p.pack_no = os.item
        AND (im.item = '' OR im.item_parent = '' OR im.item_grandparent = '')
        AND p.item = im.item
  );

Open Orders, Deals Tables & Appointments

Q7: Items on Partially Received Open Orders

Finds open, partially received orders for the items under a parent. These POs can block a re-class.

SQL
SELECT oh.order_no, oh.order_type, oh.status, ol.item, oh.written_date, oh.NOT_AFTER_DATE, ol.location, ol.qty_ordered, ol.qty_received, ol.last_received
FROM rms.ordloc ol, rms.ordhead oh
WHERE oh.order_no = ol.order_no
  AND ol.item IN (SELECT item_parent FROM rms.item_master WHERE item_grandparent IN ('12385927'))
  AND oh.status <> 'C'
  AND ol.qty_received IS NOT NULL
  AND ol.qty_ordered > ol.qty_received
ORDER BY order_no DESC;

Q8: Check the Deals Tables

Checks both deals tables for the PO numbers found with Q7. Run both queries.

SQL Profile 1
SELECT *
FROM rms.deal_calc_queue
WHERE order_no IN ('');
SQL Profile 2
SELECT *
FROM rms.deal_order_temp
WHERE order_no IN ('')
ORDER BY order_no ASC;

Q9: Open Appointments on POs

Shows appointments on the POs and their status. Appointments must be closed before a PO can be closed.

SQL
SELECT DISTINCT ad.doc, ah.loc, ah.appt rms_appt_nbr, ah.status, 
                DECODE(ah.status, 'SC', 'Scheduled',
                                  'AR', 'Arrived',
                                  'AC', 'Closed',
                                  'UNKNOWN') AS appt_status 
FROM rms.appt_head ah, rms.appt_detail ad 
WHERE ad.appt = ah.appt 
  AND ad.doc IN ('');

Rejections & Validation

Q11: Recent Re-class Rejections

Shows rejection reasons from the last batch, by user ID (or by item). Only the previous batch's errors are kept here.

SQL
SELECT *
FROM rms.mc_rejections
WHERE user_id = 'NEXADID'; -- (By user ID)
---and item in (''); -- (By item, if using only item, replace 'and' with 'where')

Q12: Past Re-class Rejections

Searches the rejection archive by change type, date keyed, user ID or item.

SQL
SELECT *
FROM rms.mc_rejections_archive
WHERE change_type = 'M'; -- (By re-class change type)
  --and TRANS_DATE = 'DD-MMM-YY'; -- (By date re-class was keyed)
  AND user_id = 'NEXADID'; -- (By User ID)
  ---and item in (''); -- (By item)

Q13: Did an Item List Re-class?

Shows the current dept/class/subclass of every item on an item list. Filter it in Excel to spot items that didn't move.

SQL
SELECT sd.skulist, im.ITEM_PARENT, im.item_grandparent, im.DEPT, im.class, im.subclass, im.item_desc
FROM rms.skulist_detail sd, rms.item_master im
WHERE sd.item = im.item_parent 
  AND sd.skulist IN ('');

Q14: Did a Single Item Re-class?

Shows an item's current dept/class/subclass.

SQL
SELECT item_parent, item_desc, dept, class, subclass
FROM rms.item_master
WHERE item IN ('');

Lawson (Financial) Moves

Q15: Departments on an Item List

Lists the departments of the items on an item list. More than one department can mean a mis-keyed item or a financial move.

SQL
SELECT DISTINCT dept
FROM rms.skulist_detail sd, rms.item_master im
WHERE sd.item = im.item_parent 
  AND sd.skulist = '';

Q16: Is It a Financial (Lawson) Move?

Shows the group for each department, to confirm whether a re-class crosses financial groups.

SQL
SELECT g.group_no, g.group_name, d.dept, d.dept_name, d.group_no
FROM rms.groups g, rms.deps d
WHERE g.group_no = d.group_no 
  AND d.dept IN ();

Nightly Batch

Q18: Re-classes Scheduled for the Nightly Batch

Lists every pending re-class in the re-class header table.

SQL
SELECT *
FROM rms.reclass_head
ORDER BY reclass_no ASC;

Q19: Look Up Specific Re-class Numbers

Shows the effective date and details for specific re-class numbers, to confirm a re-class was submitted correctly.

SQL
SELECT *
FROM rms.reclass_head
WHERE reclass_no IN ();

Compare v16 and v10 Hierarchies After Re-classing

Run the week after a re-class. Compares each re-classed item's dept/class/subclass in RMS v16 with RMS v10 to confirm both systems match.

SQL
SELECT DISTINCT im.item_parent, ri.item, im.dept, im.class, im.subclass, 
                COALESCE(vim.item_parent, vim.item) AS Highest_level_RIN, 
                vim.item, vim.dept, vim.class, vim.subclass
FROM rms.nex_reclass_item ri, rms.item_master im, rms_v10.item_master vim
WHERE ri.item = im.item
  AND ri.item = vim.item
  AND im.item = vim.item
  AND reclass_date >= 'DD-MMM-YY'
  AND reclass_date <= 'DD-MMM-YY'
  AND im.item_level = '2';

Additional Re-Class Queries

Item Count per Item List

Counts the items on each item list. Lists of about 100–150 items process best.

SQL
SELECT skulist, COUNT(item)
FROM rms.skulist_detail
WHERE skulist IN ('')
GROUP BY skulist;

Adding a Size Code (ID)

*Note: Before building a new size code or Differentiator Group - please make sure that size code is not already built and, that if a team is requesting a new Diff Group that there isn't already a Diff group that contains some or a majority of the sizes requested.

Download Differentiators Template

In RMS, navigate through the menu paths to download the template foundation metadata layer:

  1. Go to: Tasks → Foundation Data → Data Loading → Download

  2. ORACLE Merchandising
    ★
    ✓
    🔔 99+
    < Data Loading ▼
    ⚲ Search for a task
    ★ Download
    ★ Upload
         Review Status
         Download Blank Template


  3. Once in the Download Data tab For the Template Type select Items and for Template select Differentiators

  4. ☰ ORACLE Merchandising
    ❓
    Download Data ×
    ▼
    ▼

  5. Click Download Open with Microsoft Excel Click OK
  6. Once Excel Spreadsheet opens, go to the Diff_IDs tab
  7. Clear Diff_IDs tab out data below Headers and do as follows:
    For Action: Select CREATE from the drop-down list.
    For Diff ID: Enter the size code requested (e.g., 30").
    For Diff Description: Enter the size description (e.g., 30").
  8. Notes: Diff IDs CANNOT have spaces or underscores. If a space is needed create a USD Incident to RAVE and they will insert it on the backend.
    Diff IDs cannot be longer than 10 characters - INCLUDING spaces.

    Repeat previous steps as needed if creating more than one size

  9. Save as an .ods file
    • Naming Protocol: Sizes_Dates
    • Drive Registry Path: X:\shared\folder
  10. Go to: Tasks → Foundation Data → Data Loading → Upload
  11. ORACLE Merchandising
    ★
    ✓
    🔔 99+
    < Data Loading ▼
    ⚲ Search for a task
    ★ Download
    ★ Upload
         Review Status
         Download Blank Template

    Once in the Upload Data tab input the following:

  12. For the Template Type select Items
  13. For Template select Differentiators
  14. For Process Description it can be left the same or edited
  15. For Source File click Browse and find .ods file that was saved

  16. ORACLE Merchandising
    ❓
    Upload Data ×
    ▼
    ▼
    Size Uni Test 2 101218.ods


  17. Upload File
  18. To determine if induction was successful:
    If you receive a notification, there was an error. Check Issues and troubleshoot
    Run below query with LOWERCASED RMSv16 User ID:
  19. SQL
    SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date,
           s.process_id, s.process_desc, s.status, s.user_id, s.file_path 
    FROM rms.svc_process_tracker s 
    WHERE user_id = 'username' 
    ORDER BY action_date DESC;
  20. Run queries included in index so add new sizes to Quick Reference Guide (QRG) listing on the SharePoint HUB and let Senior Tech or Data Steward Team Manager know new sizes were created

Creating a new Differentiator Group

  1. In RMS16 go to Tasks > Foundation Data > Items > Differentiators > Diff Groups
  2. Click Actions > Add or Click the green plus sign
  3. Note:Click Query by Example to find the next sequential Diff Group number


    Merchandising
    ❓
    Upload Items from File ×
    Differentiator Groups ×
    ▲ Diff Groups
    Actions View
    + ✏️ ✕
    📊↓ 🔄
    📄 Detach 🌐
    end;
    Group Group Description Type Description Region Department
    ▼
    ▼
    125S BELT SIZES Size
    127S MEN'S SHIRTS Size
    128S 5/6 - 9/10 Size
    129S SHORT SLV SHIRT Size
    131S INFANTS Size
    ▲ Group Detail
    Actions View
    + ✕
    📊↓ 🔄
    📄 Detach
    Sequence Size Description
    ▼
    1 S/M S/M
    2 M/L M/L


    Finding/Adding a Diff Group Number

    For Group input the next sequential number (you can filter the Group category by descending to see the next number)

  4. 11. If adding a Size, S must be put after the number For Group Description input desired group name
  5. Group Description must not exceed 40 characters - INCLUDING SPACES
  6. Click OK or OK and Add Another

  7. Add Group
    *Group
    *Group Description
    *Type
    ▼
    Size
    Region
    ▼
    Department
    ▼

  8. Save and Close

  9. Adding sizes or colors to a new Diff Group

  10. In the "Diff Groups" section click on Group wanting to edit (so it's highlighted)

  11. ▲ Diff Groups
    Actions ▼ View ▼
    + ✏️ ✕
    📊↓ 🔄
    📄 Detach 🌐
    Group Group Description Type Description Region Department
    ▼
    ▼
    TODDLER MI 2T,3T,4T,S,M,L,XL Size
    GIFTCRD WEB GIFT CARD DENOMINATIONS Size
    COLOR Color Color
    321S SuperFeet Insoles Size
    320S UNIFORMS - FOOTWEAR Size
    ▲ Group Detail
    Actions ▼ View ▼
    + ✕
    📊↓ 🔄
    📄 Detach
    Sequence Size Description
    ▼
    SF.B B: 4.5-6 US Women's/2.5-4 US Juniors
    SF.C C: 6.5-8 US Women's/5.5-7 US Men's
    SF.D D: 8.5-10 US Women's/7.5-9 US Men's
    SF.E E: 10.5-12 Women's/9.5-11 US Men's
    SF.F F: 12.5+US Women's/11.5-13 US Men's
    SF.G G: 13.5-15 US Men's

  12. In the Group Detail section below click the green plus sign
  13. Enter the first or next Sequence number and a valid RMS Size


  14. Click OK or OK and Add Another
  15. Click Save and Close

  16. Send the following e-mail with the information below:

    Generate Email

  17. ECOMM group will respond back that they have made the updates

  18. Differentiator Batch


    The APPWORX batch for the Diff Groups and Sizes runs every 8 hours: 4AM, 12PM, 8PM. If someone needs a size built AFTER the 12PM batch is ran, you can either - wait until the next day and submit it before 12PM or you can get RAVE to ADHOC the batch.


    To ADHOC the batch submit a USD Ticket to the RAVE team with the following message format:

    Incident Description
    
    Hi Team!
    
    Requesting to have the ORETAIL_INT_MASTER_DATA batch to run because I built the sizes after the 12pm batch.
    
    We created 10 new sizes 
    and added all 10 to the Group 313S

    Queries


    SQL
    ---Full list of Diff Groups and their respective IDs
    SELECT DISTINCT dg.diff_group_id, dg.diff_group_desc, di.diff_id
    FROM rms.diff_ids di, rms.diff_group_head dg, rms.diff_group_detail df
    WHERE df.diff_id = di.diff_id
    AND dg.diff_group_id = df.diff_group_id
    AND dg.diff_group_id <> 'COLOR'
    ORDER BY dg.diff_group_id, dg.diff_group_desc, di.diff_id;
    
    ---To see Diffs created on a specific date (change date as necessary)
    SELECT *
    FROM RMS.DIFF_IDS
    WHERE TRUNC(create_datetime) = '16-OCT-18';
    
    SELECT * 
    FROM RMS.DIFF_IDS 
    WHERE TRUNC(create_datetime) = TRUNC(SYSDATE);

Adding a Supplier via Item Induction

Use this process when adding a new supplier to an existing item. The Item Induction Form is used — only the Item Tab and (optionally) the Location Tab need to be filled out.

NOTE: If locations are ALREADY attached to items, a Manual Maintenance template will need to be filled out with the Action - Update Primary Supplier and enter the Parent Item [An Item List is required when there are 5 or more items going to the same supplier], Location List, and Supplier. Buying teams should submit both of these templates on the same e-mail.

Item Tab — Required Columns

ColumnField / Notes
A — ActionSelect Add Item Supplier
H — Parent ItemRequired
I — Transaction ItemRequired
V — VPNPopulate per Web/DST/Vendor requirements for BOPIP, Drop Ship, etc. If adding VPN: copy transaction RIN to parent column on a secondary line; delete from Transaction Item column.
BE — Supplier SiteRequired
BG — Primary Supplier IndChange to No if the new supplier is not the Primary
BN — Unit CostRequired
BR–BU — Inner Size, Case Size, Ti, HiRequired
DK — BuyerRequired
Action Status Item Type Sellable Parent Item Transaction Item VPN Supplier Site Supplier Site Name Primary Supplier Ind Unit Cost Default UOP Inner Size Case Size Ti Hi Round Level Buyer
Add Item Supplier Approved Regular Item Yes 14910832 894000C599080 8086 Yes 3.91 CS 8 8 1 1 Case 346
Add Item Supplier Approved Regular Item Yes 14910842 894000C599080 8086 Yes 3.91 CS 8 8 1 1 Case 346

Location Tab (if ranging to new locations)

ColumnField / Notes
A — ActionDefaults to Create Location
C — ItemParent-level RIN
D–E — Location ListUse if ranging by Location List
G–I — LocationUse if ranging by single location

Save file as ODS and upload to V16

Updating Primary Supplier — Item List

ℹ
An Item List is required when 5 or more items are going to the same supplier. Buying teams should submit both the Item Induction template and the Manual Maintenance template in the same email.

Required columns on the Manual Maintenance template:

Action Parent Item Transaction Item Item List Number (If More than 5 Items) GTIN Item Updated GTIN Desc (ie, add _pc, add _pu) Supplier Site # Location
Update Primary Supplier 22285450 118547120 609219
Update Primary Supplier 22285450 118547120 68105
Update Primary Supplier 22285450 118547120 2325011
Update Primary Supplier 22285450 118547120 2325012
Update Primary Supplier 22285450 118547120 4180048
Update Primary Supplier 22285450 118547120 9870
Update Primary Supplier 22285450 118547120 781

Updating in RMS v16

  1. Go to Tasks → Foundation Data → Manage Item Lists. Paste the Item List number → Search.
  2. In the Results box: Actions → Mass Change → Item/Locations.


  3. Item List Search ×
    ▲ Search
    Match
    Saved Search
    📅
    🔍
    ▲ Results
    | | |
    Item List Description Type Total Items Created Date Created By
    22285450 Air Wick Oil 3 Items Dynamic 3 4/24/26 boydz


  4. Click the Green (+). Select the appropriate location type → OK. Add additional locations as needed.
  5. Paste the Primary Supplier into the Primary Supplier Site field. Set Primary Country to USA.
  6. Click Save and Close.

Updating Primary Supplier — Single Item

Required columns on the Manual Maintenance template:

ACTION ITEM INFORMATION UPDATING PRIMARY SUPPLIER
Action Parent Item Transaction Item Item List Number (If More than 5 Items) Supplier Site # Location
Update Primary Supplier 14910832 14910842 118547120 8086

Updating in RMS v16

  1. Go to Tasks → Items → Manage Items. Paste the Parent RIN into the item field → Search → click into the item RIN.


  2. ▲ Results
    Actions ▼ View ▼ | 📄 📖 ✏️ 👓 | 🔍 📊 | ◪ Detach ⇄ Wrap
    Item Description Item Level Department Class Subclass Subclass Name
    14910832 Orchard Valley Harvest Trail Mix Chocolate Raisin 8oz Level 1 974 1100 1 PEGGED TRAIL MIXES


  3. Click More Actions → Locations.


  4. ▲

    Parent "14910832 | Orchard Valley Harvest Trail Mix Chocolate Raisin 8oz

    Regular Item | Approved
    ▲ Descriptions 🌐
    Oracle Retail Item Number
    ▲ Usage and Units


  5. Click More Actions → Mass Change → Location Attributes.


  6. Actions ▼ View ▼ | ➕ ✏️ | 📊 📅 | ◪ Detach
    Location Type Location Name Status Average Cost Unit Cost Unit Retail Currency
    Store 2 NORF PACKAGE STORE Active 4.10 USD
    Store 5 NORF CCC Active 4.10 USD
    Store 7 HUNTINGTON HALL MM Active 4.10 USD
    Store 8 NORF V55 MM/GAS Active 4.10 USD
    Store 9 NORF CEP 76 MM/GAS Active 4.10 USD
    Store 10 NORF MAIN STORE Active 4.10 USD
    Store 13 NORF LT PARKING Active 4.10 USD


  7. Click the Green (+). Select the appropriate location type: Store, Warehouse, Location List-Store, or Location List-Warehouse → OK. Add additional locations as needed.
  8. Paste the Primary Supplier into the Primary Supplier Site field. Set Primary Country to USA.
  9. Click Save and Close.

Mass UPC Deletion

IdentifierSOP-D.02.0.0
AuthorName Redacted
ApprovalName Redacted — Director, Merchandise Planning & Analysis
DistributionData Steward Team

Purpose

This Standard Operating Procedure (SOP) describes the process for AGC mass UPC deletion.

Scope

This SOP is a mandatory document and shall be implemented by all employees when engaging in this project.

Training

The Manager of the Data Steward Team is responsible for ensuring that team members who follow this procedure understand the SOP's objectives and other inter-related activities. Ensure that team members sign that they have read and understand this SOP.

Precautions

Use this SOP in conjunction with other related item induction and item deletion procedures.

Responsibility

Data Steward Team members are responsible for the activities identified in this procedure.

Equipment / Systems

  • Data Steward Inbox
  • HUB: Merchandising / Support / ORUP
  • Item Induction Template
  • Microsoft Exchange Email
  • RMSv16 & RMSv10
  • TOAD / SQL — RMSv16 & RMSv10
ℹ
This procedure is for the Monthly AGC/PRG 832 UPC/EAN Mass Deletes. This process has been set up with the AGC (American Greeting Cards) vendor, as these departments are on Scan Base Trading — an initiative where NEXCOM does not own any inventory. AGC manages the inventory and NEXCOM receives the sales.

This 832 UPC/EAN deletion process happens monthly. The email will usually come in on the first Monday of the first full week of the month. As phases of RMSv16 are being implemented, data is managed in both RMSv16 and RMSv10 — the deletion process takes at least 2 days to fully delete UPCs out of both systems (longer if there are issues with the UPCs or delays with data flowing/batches running).

The UPC deletion process is a nightly job in the RMS batches and runs in the After Batch, after all other phases have completed. The DST will flag UPCs for deletion in RMSv16 via the CFAS flag. This flag sends a message to RMSv10 to put the UPCs into "Delete Pending" status in RMSv10. The UPCs will purge via the Daily Purge job in the nightly batch, and then send a message back to RMSv16 to place the UPCs into "Delete Pending" status there as well. The UPCs then purge out of RMSv16 via the Daily Purge job in the nightly batch.

Notification & Submission

  1. Notification of AGC Monthly UPC Deletes will come into the DST inbox. The original email will be from the TLE Admin User and will be forwarded to DST from either the EDI Business Team or START. Subject will be: "RETEK 832 UPC/EAN Deletion Report for (Date)."
  2. The email will contain a list of UPCs to delete, and at the bottom will be a count of UPCs.

Creating Item Induction Template for Mass UPC Deletes

ℹ
At this time, there is still a need to create the store in both RMS and Richter. When completely off of Richter, this process needs to be re-evaluated.
  1. Download or open the Item Induction Template from the HUB. The most current template may be downloaded from:
    Item Induction Template
    internal-link
  2. In the Action Field (Column A): select Add Item CFAS.
  3. In the Parent Field (Column H): enter the UPCs from the Retek 832 UPC/EAN Deletion Report.
    ⚠
    Note: Copy the UPCs, and when pasting into the Parent field, select "Match Destination Formatting." A straight paste will lose the front-loading zero on the UPCs.
  4. In the Buyer Field (Column DK): enter 260 (Buyer # for these departments).
  5. Copy the Action Field of "Add Item CFAS" and Buyer Field of "260" down to match the amount of UPCs pasted into the template.

  6. Item Information
    Action Status Item Type Sellable Orderable Inventory Item Family ID Parent Item Transaction Item Buyer
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051280376 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051280482 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051280499 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051280529 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051312053 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 013051571641 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 018100028497 260
    Add Item CFAs Approved Regular Item Yes Yes Yes 018100527877 260

  7. Validate front-loading UPCs did not drop off.
  8. If you have a Security Warning Banner stating macros have been disabled, select the Enable Content button.
  9. Select the Populate Button in Rows 2 & 3 / Column C & D — the 4 tabs at the bottom of the template will explode out, and UPCs will populate the necessary tabs.
  10. On the Item Tab, go all the way to the end and validate there are no errors upon populating the template. Errors, if any, will populate in columns DN & DO.
  11. At the bottom of the template by the tabs, select the right arrow with the line to show the last several tabs so you see the Vw_Nexcfas tab.
  12. On the Vw_Nexcfas tab, column G (Delete Flag) is populated with "N." Change this field to "Y" and copy down for all records on the template.
  13. A B C D E F G
    1 Item Plan-o-Gram Required NRF Size Code NRF Size Desc Base Zone Buyer Delete Flag
    2 013051280376 Y 260 Y
    3 013051280482 Y 260 Y
    4 013051280499 Y 260 Y
    5 013051280529 Y 260 Y
  14. Name the file (e.g., AGC-PRG Deletes_06May19 #1) and save the template as an .ODS file. It must be an .ODS file in order to induct it into RMSv16.
  15. ⚠
    Note: If there are several thousand UPCs to delete, break this process up into multiple templates with no more than 800 UPCs. The maximum supported for deleting UPCs is not yet known — it may be higher, but large batches can be more cumbersome to troubleshoot if issues arise.

Inducting Mass Delete Item Induction Template

  1. Log into RMSv16 internal-link and go to the Main Screen.
  2. Select Items > Upload Items from File.
    If saved in Favorites, select the Star and then Upload Items from File. If not, select Tasks (Clipboard with Check Mark) → Items → Upload Items from File. The Upload Items from File screen will open.
  3. From the Upload Items from File screen, populate the following fields:

  4. Source and Destination
    AGC-PRG Deletes_06May19 #1.ods

  5. The file will process in the background. You'll receive a notification under the Bell Icon when the file has finished processing.
  6. Select the Bell Icon; the Notifications box will open. Select the blue link, and the Data Loading Status screen will open.
  7. From the Data Loading Status screen, check the Status of your Item Induction Delete File.
    ℹ
    You may need to scroll right to see the status field. Make note of your Process ID # — it will be important for a later step.
  8. The record will show a Process ID # and the Status should say "Processed with errors," since not all fields are being populated but the file still processes.
  9. If the Status says Processed w/ Errors, the View Issues button will be enabled — select it to check your errors. The most common error indicates that the template is expecting fields to be populated that are not; these fields are not needed for deleting UPCs.
  10. For additional Delete Files, repeat the upload steps above until all Delete Files have been processed.
  11. To validate the file updated correctly, log in to RMSv16 SQL Developer or TOAD and run the following query (entering the UPCs you submitted to be deleted):
  12. SQL — Validate CFAS Flag (RMSv16)
    SELECT *
    FROM RMS.ITEM_MASTER_CFA_EXT
    WHERE ITEM IN ('601350155138',
    '601350155145',
    '601350155152',
    '601350155169',
    '747941643698',
    '747941643704',
    '747941643711',
    '747941621757');
  13. The results you are looking for are the VARCHAR2_2 & VARCHAR2_3 fields populated with 'Y' and the Buyer #.


  14. ≡ ITEM GROUP_ID VARCHAR2_1 VARCHAR2_2 VARCHAR2_3 VARCHAR2_4
    601350155138 10009 Y Y 940
    601350155145 10009 Y Y 940
    601350155152 10009 Y Y 940
    601350155169 10009 Y Y 940
    747941339560 10009 Y Y 940
    747941339577 10009 Y Y 940
    747941339584 10009 Y Y 940
    747941339591 10009 Y Y 940
    747941621726 10009 Y Y 940
    747941621733 10009 Y Y 940
    747941621740 10009 Y Y 940
    747941621757 10009 Y Y 940
    747941643698 10009 Y Y 940
    747941643704 10009 Y Y 940
    747941643711 10009 Y Y 940

  15. You can also check on the frontend. From Favorites or the Task list, select Manage Items. Select the UPC to open the Item Screen with the item information.
  16. On the bottom right, select More Actions and scroll down to Other Attributes.
  17. Select Item Master CFAS — this opens the Item Master CFAS Screen. You should see the Delete Flag box checked.
  18. From here, the process sends the delete file to RMSv10 and places the UPCs into Delete Pending status there.
  19. The Daily Purge job is a nightly batch in RMSv10 that processes anything in Delete Pending. This is an overnight job — you will not see results until the following day.
  20. To validate UPCs have been deleted, run the following query in RMSv10 (SQL Developer or TOAD) — no records should be returned:
  21. SQL — Validate Deletion (RMSv10)
    select distinct item, item_parent TRANSACTION, item_grandparent PARENT, item_desc, dept, class, subclass,
    create_datetime, last_update_id, last_update_datetime
    from rms.item_master
    where item in ('601350155138',
    '601350155145',
    '601350155152',
    '601350155169',
    '747941643698',
    '747941643704',
    '747941643711');
  22. Assuming the Daily Purge job runs with no issues, the UPCs will delete out of RMSv10 and send a file to RMSv16 to place the UPCs into Delete Pending there as well.
  23. The Daily Purge job is also a nightly batch in RMSv16. This is again an overnight job — results will not appear until the following day.
  24. To validate UPCs have been deleted, run the same query above in RMSv16 (SQL Developer or TOAD) — no records should be returned.
  25. If records are returned, run the following queries in RMSv16:

  26. SQL — Daily Purge Tables
    select *
    from rms.daily_purge;
    -- If data is still in this table, the UPCs are slated to be deleted;
    -- check whether the Daily Purge job ran the previous night.
    
    select *
    from rms.daily_purge_error_log;
    -- If data is returned here, something has blocked or prevented the UPC from purging.

    For AGC/PRG, it's very rare to have issues with UPCs deleting. The most common error is if the UPC is in the Ordsku table in the REF_ITEM field.

    Table
    
    select *
    from rms.ordsku
    where ref_item = '',
    
    
    23
    select *
    24
    from rms.ordsku
    25
    --where ref_item = '';
    26
    Data Grid
    |◀ ◀ ▶ ▶| + - ▲ ✓ ✕
    ORDER_NO ITEM REF_ITEM ORIGIN_COUNTRY_ID
    ▶ 20364755 11365734 610764826176 USA
    20364762 2444 085000007167 USA
    20364796 8789250 030111420411 USA
    20364797 6873410 030111416735 USA
    20364802 12712854 846675011404 USA
⚠
If UPCs are in this field, create an Incident for RAVE requesting that they clear the field so the UPCs may be deleted in the Daily Purge job.

Deleting Process ID's

Once all UPCs have deleted out of both systems, go back into RMSv16 and delete your Process IDs. This step is needed because AGC/PRG will re-use (or do a Price Change on) their UPCs — if the Process IDs are not deleted or cleared out of RMSv16, then when the new UPCs are inducted, it will error upon induction.

  1. From the RMSv16 main screen, select Notifications (Bell Icon), and at the bottom select "See All."
  2. The Notifications screen will open.
  3. In the Search field above Description, enter your Process ID with a % (wildcard) sign in front — e.g., %3875833 — then hit Enter and your record should return.
  4. Select the Description link; the Data Loading Status screen will open. Select the red X at the top.
  5. A warning box will appear asking "Are you sure you want to delete this record?" Select Yes.
  6. You'll be taken back to the Data Loading screen and the record should be gone — it should state "No Data to Display."
  7. Select Save and Close at the bottom right; you'll be taken back to the Notifications screen.
  8. Repeat this process for any other Process IDs you need to delete.

Corporate Delete Process

We have identified the most effective way to process corporate deletes in RMS v16 so the information will translate into reports in our IKB and help eliminate holes on the shelf and lost sales.

Benefits

  • Better information out of RMS with UDA tracking and reporting ability.
  • Adding _D to the end of the item description is a quick way to identify that the item is deleted.
  • Adding (D) to the beginning of the VPN should prevent a supplier from shipping.
  • Adding UDA ID 533 and UDA Value 2 flows into IKB and identifies the item as deleted.

The Process

    Buyer determines the item is a corporate delete. The buying team can either:

  1. Update the item on the front end in RMS v16:
    Add _D to the end of the item description.
    Add (D) in front of the VPN.
    Add UDA 533, Value 2.
  2. Or:

  3. Download the item from RMS v16 following the steps below and send it to the Data Steward Team to be uploaded (strongly recommended if you have multiple RINs).

  4. Note on Parent/Child RINs: If an item has 1 Parent and 1 Child, both RINs need to be updated.
    If an item has 1 Parent and many Children, only the Child RIN needs to be updated.

Step 1 — Create Your Item List

  1. Create your item list in RMS v16, including both Parent & Child RINs if necessary.

Step 2 — Download the Item List from RMS

  1. Click the Tasks button and choose "Items."
  2. ORACLE Merchandising
    ★
    ✓
    🔔
    Tasks
    ⚲ Search for a task
    Foundation Data ˃
    Items ˃ •
    Cost ˃
    Price ˃
    Orders ˃
  3. Choose "Download Items from RMS."
  4. ORACLE Merchandising
    ★
    ✓
    🔔
    < Items
    ▼
    ⚲ Search for a task
    Create Item
    Manage Items
    Download Items from Staging
    Download Items from RMS
    Upload Items from Staging
    Upload Items from File
    Upload Items Step 2
  5. Enter the Item List # and click Search. Item details will appear at the bottom of the screen.
  6. Click the Download button.
  7. ORACLE Merchandising 👤 username ▾ ❓
    Download Items from RMS ✕
    ▲ Search
    Item
    🔍
    Item Description
    Department
    ▼
    Class
    ▼
    Saved Search
    Default
    ▼
    Subclass
    ▼
    VPN
    ▼
    Item List
    ▼
    Supplier Site
    ▼
    ▲ Results
    Actions ▾
    View ▾
    💾↑
    📋↓
    🔳 Detach
    Download
    Item Item Description Supplier Site Department Class Subclass
    10294178 FRAME 8X10 WALNUT_D 613705565 795 1101 1
    10348111 BP ACACIA WOOD FRAME GREY... 613705565 795 1101 1
    10348112 BP ACACIA WOOD FRAME GREY... 613705565 795 1101 1
    10348622 BP PS FRAME METAL & WOOD L... 613705565 795 1101 1
    10348646 BP BARNWOOD TEXTURED WO... 613705565 795 1101 2
    10348650 BP BARNWOOD TEXTURED WO... 613705565 795 1101 2
    10902669 5X7 RAISED DIAMOND GRAY_DIOI 1056936 795 1101 1
    10908125 BP BARNWOOD TEXTURED WO... 613705565 795 1101 1
  8. A box will pop up — choose "Item Master." A Process Description will auto-populate. Click OK.

Step 3 — Open the File in Excel

  1. You'll see the option to Open the file — choose Open with Microsoft Excel.
  2. The file that opens is the "Item Induction Base Template." Note the multiple tabs at the bottom of the spreadsheet.
  3. Click the “Item Master” tab: This tab contains all Item Description information from RMS in columns X, Y, Z.
  4. Buying team will need to add _D at the end of the item description in column X.

  5. Status Item Description Secondary Description Short Description
    Approved BP ACACIA WOOD FRAME GREY WASH WYATT 5x7_D BP 5x7 Acacia Wood Frame Grey Wash Wyatt_D BP ACACIA WOOD FRAME_D
    Approved 5X7 RAISED DIAMOND GRAY_D 5X7 RAISED DIAMOND GRAY_D 5X7 RAISED DIAMOND GRAY_D
    Approved BP METAL CLAD FRAME 5x7 - OFF WHITE W/PEWTER_D BP METAL CLAD FRAME 5x7 - OFF WHITE W/PEWTER_D BP METAL CLAD FRAME_D
    Approved BP MIRROR ON MIRROR FRAME 4x6 - SILVER TEXTURE_D BP MIRROR ON MIRROR FRAME 4x6 - SILVER TEXTURE_D BP MIRROR ON MIRROR FRAME_D
    Approved FRAME 8X10 WALNUT_D FRAME 8X10 WALNUT_D FRAME 8X10 WALNUT_D

  6. Click the “Item_Supplier” tab. This tab contains the VPN in column E.
    Buying team will need to add (D) in front of each VPN

  7. Supplier Primary VPN
    61370556
    Yes (D) 150334601
    1056936
    Yes (D) 2267-57
    61370556
    Yes (D) 18357-44A-14
    61370556
    Yes (D) 11679-02M-27
    61370556
    Yes (D) 11679-46-27

  8. Click the “Item_LOV_UDAs” tab.This tab contains any UDAs currently attached to the items. Please leave these rows as-is
    User will go back to the Item Master tab and copy all RIN#s from column ‘B’ (only Child RINs live on POGs).
    Paste those RIN#s in Column B of the Item_LOV_UDAs tab.
    In Column A chose “Create” for any new RINs and add the Corporate Delete UDAs in columns C & D

  9. Action Item UDA UDA Value
    10348611
    5463
    15
    10348612
    5463
    15
    10348650
    9632
    2
    10902669
    9632
    2
    10908125
    5463
    15
    10908138
    5463
    15
    Create
    10348612
    533 2
    Create
    10348622
    533 2
    Create
    10348646
    533 2
    Create
    10348650
    533 2
    Create
    10902669
    533 2
    Create
    10908125
    533 2
    Create
    10908138
    533 2
    Create
    10908139
    533 2
    Create
    10908170
    533 2
    Create
    10908175
    533 2

Step 4 — Save & Send

  1. Save the file to your personal drive with whatever name you choose. The file will automatically be in the correct ODS format (Open Document Spreadsheet).
  2. Send the ODS file to the Data Steward Team for upload. Please note "Corporate Delete" in the subject line. You're done!
  3. DST Uploads via Tasks>Items>Upload Items From File

Item Reclassification

DocumentSOP-S.05.1.2 · Item Re-class (v16 & v10)
AuthorData Steward Team
ScopeMandatory: all DST members

What it is

A re-class moves an approved item from one department/class/subclass to another in RMS. Buying teams request them through the DST Inbox; DST checks that the item can safely move, keys the re-class in RMS v16 (and in RMS v10 where required), and the change is applied by the nightly batch. Most of the work is in the checks beforehand: forecasting, mandatory UDAs, open orders on the deals tables, pack components and financial (Lawson) moves are the usual reasons a re-class fails.

Key factDetail
Non-financial re-classesProcessed monthly, during the 1st full week of the month.
Financial re-classesProcessed twice a year, directly after inventories (February and August).
Item levelIn v16, always re-class at the Parent level (Level 1, formerly the Grandparent in v10). Packs are the only 2-level items.
Item listsRequired when more than five items go to the same dept/class/subclass. A separate list is needed for v16 and v10.
Nightly volumeSoft cap of 25,000 items per night, counting all items exploded out.
When it runsThe re-class job runs in Phase 4 of the nightly batch (the after-batch), the night before the effective date.
Closing POsOrders that must be closed have to be closed in v16 by 1 pm EST so the change flows to v10.

Process at a glance

  1. Receive the request in the DST Inbox and check the re-class form is complete.
  2. Run the pre-re-class checks: forecasting, mandatory UDAs, hierarchy changes, financial moves, and open or pack orders.
  3. Key the re-class in RMS v16, and in v10 (single item or item list) where required.
  4. Report the night's item count before leaving for the day.
  5. After the batch, validate the results and fix any failures (open orders, pack components).
  6. Reply to the original email with the canned response once validation is complete.

Definitions

TermDefinition
2-Level ItemAn item built with a RIN and Reference number; built at Trans Level 1.
3-Level ItemAn item built with a Grandparent RIN, Transaction RIN and Reference number. All items are 3-level in v16, except Packs.
Component ItemAn item inside a pack, such as an individual pack of cigarettes or a single bag of jerky.
Deals TablesTables that cause re-classes to fail when POs are on them.
ForecastingThe RMS module that estimates future sales.
Pack ItemThe container that holds other items (e.g. a carton of cigarettes, or a display/shipper). The ONLY 2-level items in v16; they have no Parent Item.
Parent ItemThe highest item level in v16, formerly the Grandparent in v10. All v16 re-classes are done at this level.
Query / ReportThe script run in SQL or Toad, and the results it returns (or results from RDW/QS).
SkulistThe SQL name for an Item List: a group of items compiled on a single list.
Transaction ItemThe level 2 item that is ordered and sold. The Child item in 3-level items, or the RIN in 2-level items.
UDAUser Defined Attribute.

About this Procedure

  • Purpose: documents the steps needed to complete RMS item re-classes.
  • Scope: mandatory for all DST members when creating or editing item re-classes for the buying groups.
  • Training: DST makes sure team members understand this SOP. Buying teams are trained quarterly on submitting re-classes correctly.
  • Responsibility: DST updates and maintains this procedure.
  • Systems: the buying group's Item Re-class form, RMS v16 & RMS v10, Toad/SQL, and the DST role in v16 & v10.
⚠
Precaution: buying groups must tell their planner about any PO cancellations so replenishment isn't affected. If POs need to be closed (for the deals tables or a pack component on order), don't run those re-classes over a weekend or holiday, so someone is in the office to handle issues and reinstate the POs afterwards.

Receiving a Re-class Request

  1. Buying teams email the DST Inbox with the subject FINANCIAL RECLASS or RECLASS [1, 2, 3, …], depending on the type of re-class.
  2. During open re-class cycles, check the inbox several times a day and move new emails to the Received folder. Leave them unread until you start working on them. The manager assigns re-classes based on workload.
  3. Open the email and confirm the re-class form is filled out completely and correctly. The blank template is on the HUB under Code M → Support → ORUP → Templates.
  4. If more than five items are going to the same dept/class/subclass, the buying group must supply an item list, one for v16 and a separate one for v10 (v16 item lists don't flow to v10). v16 items must be at the Parent level.
  5. Keep a running total of items being processed each day and tell RAVE/RIB, so they can adjust and keep batches from running long (25k soft cap).

Re-class form columns

ColumnWhat it tells you
Item # / Item List #The Parent-level item, or the item list, to move.
RC#The re-class number. Record it here once the re-class is keyed.
Current Dept / Class / SubclassWhere the item is today.
Item CountHow many items the re-class covers, for the nightly total.
New Dept / Class / SubclassWhere the item is going.
New Dept Forecastable? Y/NWhether the forecasting check below applies.
Required UDAs Attached? Y/NWhether the destination's mandatory UDAs are on the item.
Lawson/Financial Move? Y/NWhether approval and extra notifications are needed.
Pack or Component Items Included? Y/NWhether to check pack orders before keying.

Pre-Re-class Checklist

Run these checks before keying anything. Each one catches a common cause of a failed re-class. Links go to the queries in the Re-class Query Index.

CheckHow to checkIf it applies
Mandatory UDAsQ1 (mandatory UDAs by dept; not in the query index) then Q2 (UDAs on the item list).Add every mandatory UDA for the destination dept/class/subclass before the re-class. Most were removed in RMS 16.
ForecastingQ3 (dept), Q4 (item), Q5 (item list).See Forecasted Items.
Recent hierarchy changeSearch the DST Inbox for "Please Map New and Edit Dept, Class, and Subclasses".See Hierarchy Changes.
Financial (Lawson) moveQ15 (depts on the item list), Q16 (groups for those depts).Needs approval. See Lawson Departments.
Open orders / deals tablesQ7 (open orders), Q8 (deals tables), Q9 (open appointments).Buying group closes the whole order by 1 pm EST. Items can't just be removed from it. See Open Orders.
Packs & componentsQ6 (component items on order).Buying group cancels the pack's orders. See Pack Components.

Forecasted Items

  1. Run Q3 to see whether the destination department is forecastable, then Q4 (single item) or Q5 (item list) to see whether the items are on forecasting. The item's forecastability must match the destination.
  2. Item must stay forecastable: the Forecasting Team sets up the new dept/class/subclass as forecastable. If the destination dept isn't forecastable, it must be added to a domain for the financial group (see the domain query in the query index).
  3. Item doesn't need forecasting: ask the Forecasting Team to change its replenishment method to min/max. You can then re-class it without making the destination forecastable.
⚠
Skipping this check is risky: the item won't re-class, and the Mass Change Item Rejection Report shows an unrelated error instead of saying the item is forecastable.

Merchandise Hierarchy Changes

Always check whether the destination dept/class/subclass was recently changed. Search the DST Inbox for an email tagged "FYI . . . Please Read" titled "Please Map New and Edit Dept, Class, and Subclasses". These stay in the inbox for 48 hours, then move to the Merchandise Hierarchy folder.

Destination is…When you can re-class
A dept/class/subclass with a name changeAs soon as the new name is visible in RMS. Name changes don't affect downstream systems.
A newly created dept/class/subclassWait for confirmation from the downstream systems. Going early can make sales report incorrectly.
A re-activated dept/class/subclass (was N/A, reopened with a new name)Wait for confirmation from the downstream system POCs listed in the "Please Map New and Edit…" email.

Keying a Re-class in RMS v16

One screen handles single items and item lists, and is also where you view and delete pending re-classes.

  1. From Tasks, select Foundation Data → Items → Reclassifications. RMS v16 task menu with Reclassifications highlighted under Foundation Data, Items.
  2. The Reclassifications screen lists every pending re-class, with its details below. Reclassifications screen showing pending re-classes and the Detail section.
  3. Click the green +, or Actions → Add. Actions menu open with Add circled, next to the green plus button.
  4. In the Add Reclassification window, fill in:
    • Description: the submitter's last name. If they sent more than one, add a number: DOE - #1, DOE - #2, and so on.
    • Reclass Date: defaults to tomorrow. Pick a later date if needed; the system holds the re-class until then.
    Blank Add Reclassification window with Description, Reclass Date, item selection and new hierarchy fields.
  5. Under Select Items to Reclassify, choose Item or Item List and enter the Parent-level item or the item list number (or search with the magnifier/LOV). Item selected with a Parent-level item number entered. Item List selected with an item list number entered.
    ℹ
    For 2-level items, the items on your v16 item list won't match the v10 item list.
  6. Under Select New Hierarchy, enter the Department, Class and Subclass the item is GOING TO. Completed Add Reclassification window with the new department, class and subclass.
  7. Click OK, or OK and Add Another to key the next one (repeat steps 4–6).
  8. A warning confirms the items will be reclassified the night before the reclassification effective date. Click OK. The job runs in Phase 4 of the nightly batch. Warning: Items will be reclassified the night before the reclassification effective date.
  9. Record the new re-class number in the RC# column of the re-class form.

Viewing or Deleting Pending Re-classes

Re-classes can't be edited. To change one, delete it and key it again.

  1. Open Tasks → Foundation Data → Items → Reclassifications. The grid shows re-classes that are still waiting to run (not ones already processed). Select a row to see its items in Detail. Reclassifications grid with a selected re-class and its item shown in the Detail section.
  2. To delete, highlight the re-class and click the red X (or Actions → Delete). Select Yes at the warning. Warning: Do you want to delete this record? with Yes and No.
  3. Click Save and Close to save the deletion. Reclassifications grid after the deleted re-class has been removed.
⚠
If a re-class didn't process in the nightly batch and there are no partially received orders, it must be deleted and keyed again. Changing its date in the back end won't make it run.

Keying a Single-Item Re-class in RMS v10

  1. From Retek Enterprise, double-click the Items folder, then open the Reclassification folder. Retek Enterprise Start with the Items folder open and Reclassification circled.
  2. Select Reclassify one item.
  3. Enter the item's RIN. The Reclassification Number fills in automatically; record it in the RC# column of the form. Reclassify Item window with Item, Reclassification Number, Description, Effective Date and hierarchy fields.
  4. Reclassification Description: buyer's last name and department, plus a number if there are several, e.g. DOE - Dept 123 #1.
  5. Effective Date: defaults to tomorrow; choose another day if needed.
  6. Enter the Department, Class and Subclass the item is GOING TO, then click OK.
  7. A warning confirms the item(s) will be reclassified the night before the reclassification effective date (Phase 4 of the batch). Retek Warning confirming the item will be reclassified the night before the effective date.

Keying an Item List Re-class in RMS v10

  1. From Retek Enterprise, double-click the Items folder, then Item List. Retek Enterprise Start with Item List selected in the Items folder.
  2. Choose Use from the drop-down, enter the v10 item list number and click OK. Item List Search with the Use option circled in the drop-down.
  3. From the top menu select Options → Create Mass Item Change → Reclassification. The re-class form opens with Item List in place of Item.
  4. Record the re-class number on the form.
  5. Description: Buyer Last Name - Dept # - #1 (same format as single items).
  6. Set the Effective Date (tomorrow by default), enter the Department, Class and Subclass the items are GOING TO, and click OK. Item list re-class form with the confirmation that items will be reclassified the night before the effective date.

Re-classes Between Lawson (Financial) Departments

A re-class that moves an item into a different Lawson (financial) group is a financial move and needs extra approval and notice.

  1. Confirm it's a financial move: run Q15 to list the departments on the item list (this also catches a mis-keyed item from another department), then Q16 to check whether those departments belong to different groups.
  2. Get approval from the Vice President of Merchandising Support (the Director of Merchandise Planning and Analysis can also approve moves outside the financial group).
  3. Notify the DMM of Planning and Replenishment. POCs are the Director of Merchandise Planning and Analysis and the Director of Merchandise Planning.
  4. Key the re-class as normal (RMS v16, plus v10 if required).
  5. The Merchandise Accounting Manager reviews financial moves in a monthly report and handles any follow-up.

Nightly Batch Communication to RAVE

  1. Each evening, the last team member to leave runs the batch queries: Q18 (re-classes scheduled for tonight) and Q19 (details for specific re-class numbers). The SOP also lists Q20 for tonight's re-class numbers, which isn't in the query index.
  2. Post the total number of items being re-classed that night in the Record Counts/Batch Count Teams chat. Keep it under the 25k soft cap.
  3. The week after, run the v16 vs v10 hierarchy comparison to confirm both systems match.

Validating Re-classes & Resolving Errors

  1. After the batch, check the results with Q13 (item list) or Q14 (single item). Export to Excel and filter one item list at a time. You can select several lists together if they're going to the same dept/class/subclass.
  2. If a list shows more than one value for dept, class or subclass, some items didn't move. For very large lists, just check each filter drop-down for extra values.
  3. For any failure, find the reason with Q11 (last batch only) or Q12 (older rejections, by user, date or item). The rejection reason tells you what to fix.
  4. Fix the cause (usually open orders or pack components), then key the failed items again.
  5. Once everything validates, reply to the original email with the canned response.

Unfiltered results: one item list with all its items.

SKULISTITEMDEPTCLASSSUBCLASS
18737610368897380008000
18737625611697380008000
187376553252697310013

Filtered to the old class/subclass: these two items did not re-class and must be done again.

SKULISTITEMDEPTCLASSSUBCLASS
18737610368897380008000
18737625611697380008000

Failed Because of Open Orders

  1. An item usually fails because of an open PO on the deals tables, or because it's a component of a pack that's on order.
  2. Run Q7 to find the item or item list on open orders, then check those PO numbers with Q8 (both deals tables) and Q9 (open appointments, which must be closed before the PO can be). Together they give you the POs that need closing.
  3. Export the results to Excel with columns expanded, a gray header row, a filter and all borders. Include PO number, status and, optionally, item number.
  4. Email the buying group asking them to cancel the POs and let DST know when done. For a few POs, paste a screenshot into the email; for more, attach the spreadsheet.
  5. When they confirm, check the POs are closed (Q10 in the SOP, which isn't in the query index), then key the re-class again. If RMS still sees a PO as open, wait a few minutes and retry.

Failed Because of Pack Components on Order

  1. If the item isn't on order itself but still fails for open orders, it's probably a component of a pack that is on order.
  2. Run Q6 with the item number. It returns the POs the pack is on.
  3. Ask the buying group to cancel those orders, then key the re-class for the component item(s) again.

Price for Prompt

CreatedApril 21, 2026
AuthorJ. Reynolds
SystemsRMS v16, CA Service Desk Manager (ITCSC), Outlook
Next ReviewApril 21, 2027

Price for Prompt marks specific items to prompt the cashier for a price when scanned at the register. Typical candidates are third-party services and custom items. The buying team will indicate in the email body that an item needs price prompt.

⚠
Price prompt items must be built with a retail of $0. Due to their nature, they typically have no associated GTINs and will always be built with a system-generated GTIN.

1. Building the Item

  1. Follow all normal DST item build standards.
  2. Due to the nature of the items, they typically do not have associated GTINs, so price prompt items will always be built with a system generated GTIN
  3. Dept Class Subclass Parent
    Item Description
    Transaction
    Item Description
    Web Description Supplier
    Color
    Primary Ref
    Ind
    Item Number Type GTIN
    23 1001 2 Askar Handicrafts Askar Handicrafts Askar Handicrafts Yes UCC12 Generate
  4. After completing visual checks, run the template through the Template Checker.
    Most price prompt items are from Overseas — their checker may have issues, so always run it to catch errors.
  5. Once ran through the template checker, populate the template
  6. Save as .ods.
  7. Upload to RMS v16: Tasks → Item → Upload Items from File
    Set Template to Item Master, Destination to RMS Tables, select your file → Upload.

Adding Locations

Once the items are built:

  1. In RMS v16: Tasks → Items → Upload Items — Step 2
  2. Select the .ods file, assign a process name → Upload.
ℹ
Adding locations is a batch job that runs at the top of every hour. Once attached in v16, locations will flow to v10 within 1–2 hours.

Creating the Incident Ticket

⚠
Locations must be fully attached in both v16 and v10 before creating the incident ticket.
  1. Go to CA Service Desk Manager: internal-link
  2. File → New Incident
  3. Fill in the following fields:
      • Affected End User: Whoever submitted the item request
      • Incident Area: Oracle Retail → RMS → Other
      • Group: START Group
      • Summary: Add Item To Special Items Table - Price Prompt
      • Description: Please mark newly created item, [TRANSACTION RIN(s)], as price prompt at the location level, and then add it to the special items table
  4. Save. You will receive an email confirmation with the incident number and buying group.

Quantity Key

Quantity Key updates are made at the item/location level. The Qty Key option on the Location tab is only good for new item/location relationships — for existing item/location relationships, use the steps below.

  1. From the Item screen (Clipboard icon → Item → Manage Items), enter the item provided from the SMU or email.
  2. In the results box, select the item, and the Item screen will open.

  3. ▼
    ▼
    ▼
    ▼
    ▲ Results
    Actions ▼ View ▼
    ➕⭐ 📋 ✏️ 👓
    📊↓ ⏳↓
    📄 Detach ↪️ Wrap
    Item Description Item Level Department Class Subclass Subclass Name Status
    14806261 Aroma 4-Cup Rice Cooker White Level 2 826 1401 1 RICE/PRESR/STM ... Approved

  4. In the bottom right corner, select More Actions → Locations, and the Item/Loc screen will open.

  5. ▲ Transaction "14806261 | Aroma 4-Cup Rice Cooker White

    ▲ Descriptions
    Oracle Retail Item Number
    ▲ Cost and Price
    ▲ Usage and Units
    ▲ Attributes
    ▲
    ✔ Suppliers
    Retail by Zone
    ✔ Locations
    Item Up Charges
    ✔ List Children
    Simple Pack ▶
    Transformation
    ✔ Replenishment
    Substitute Items
    ✔ User Defined Attributes
    ▼
    ❓ ↩️ ↪️ ✕
    ▼

  6. Enter the location in the Loc field.

  7. Transaction "14806261 | Aroma 4-Cup Rice Cooker White
    Actions ▼ View ▼
    ➕ ✏️
    📊↓
    📄 Detach
    ▼
    ALL ▼
    Location Type Location Name Status Average Cost Unit Cost
    Store 2 NORF PACKAGE STORE Active 9.0000 13.5000
    Store 7 HUNTINGTON HALL MM Active 9.0000 13.5000
    Store 8 NORF V55 MM/GAS Active 9.0000 13.5000
    Store 9 NORF CEP 76 MM/GAS Active 9.0000 13.5000
    Store 10 NORF MAIN STORE Active 14.3623 13.5000
    Store 15 NORF N LODGE STORE Active 9.0000 13.5000
    Store 16 LCREEK MAIN STORE Active 13.5071 13.5000
    Store 20 YORKTOWN MM/GAS Active 9.0000 13.5000
    Store 21 CHEATHAM ANNX MM/... Active 9.0000 13.5000
    Store 24 NSA HAMPTON ROADS ... Active 9.0000 13.5000
    Store 28 PORTS SCOTT CTR MAIN Active 9.0000 13.5000
    Store 29 NAVY EXCHANGE POR... Active 9.0000 13.5000
    Store 30 PORTS VA NMC MM Active 9.0000 13.5000
    Store 31 OCEANA PACKAGE ST... Active 9.0000 13.5000
    Store 32 OCEANA MM / UNIFORMS Active 9.0000 13.5000
    Store 34 OCEANA MAIN STORE Active 13.5184 13.5000
    Store 35 DAMNECK PACKAGE ST Active 9.0000 13.5000
    Store 37 DAMNECK MAIN STORE Active 9.0000 13.5000
    Store 43 LCREEK HOME GALLERY Active 9.0000 13.5000
    Store 50 NEWPORT MINI MART Active 9.0000 13.5000

  8. If you do not have the option to query by location, select the View drop down box and select Query by Example:

  9. Transaction "14806261 | Aroma 4-Cup Rice Cooker White
    Actions ▼
    View ▼
    ➕ ✏️ 📊↓
    📊↓
    📄 Detach
    Location Type Location Name Status
    Store YOKO NEX DEPOT Active
    Currency Views ▶
    Columns ▶
    Detach
    Sort ▶
    Reorder Columns...
    ✔ Query by Example




  10. Once the location record shows, select Actions -> Location Traits and the Item/Loc Trait screen will open

  11. Transaction "14806261 | Aroma 4-Cup Rice Cooker White
    ▲ Apply Updates To
    Store 461 | YOKO NEX DEPOT

    Customer Order Attributes

    ▼
    ▼

    Grocery Attributes

    📅
    Prohibited ▼
    ▼
    ▼

  12. In the Quantity Key field – select drop down and select Required.

  13. Transaction "14806261 | Aroma 4-Cup Rice Cooker White
    ▲ Apply Updates To
    Store 461 | YOKO NEX DEPOT

    Customer Order Attributes

    ▼
    ▼

    Grocery Attributes

    📅
    Required ▼
    ▼

  14. Select Save and Close until you are back to the Item screen.
  15. Repeat for additional items.

Serializing an Item

The team will indicate in the body of an email when to serialize item(s). Once serialized, the UIN Type and UIN Label fields should be visible on the Locations screen. If not, use View → Columns to add them.

Serializing a Single Item

  1. Look up the RIN at the Transaction Level in RMS v16.
  2. Navigate to More Actions → Locations.
  3. Scroll down and select More Actions → Location Attributes.
  4. Click the Green Plus Sign (+). In the Add Locations box, use the dropdown to select All Stores → click OK.
  5. Scroll to the bottom right, select the required UIN Type and UIN Label options from the dropdowns → click Save and Close.
  6. Save and Close out of the item.

Serializing Multiple Items (Mass Change)

  1. Create an Item List in RMS v16 (can be Parent + Transactions, or just Transactions).
  2. Search for Item List in RMS v16.
  3. Click Actions → Mass Change → Item/Locations.
  4. Click the Green Plus Sign (+). Select All Stores → click OK.
  5. For mass change, the Primary Supplier of the items must be entered in both the Primary Supplier and Primary Country fields.
  6. Select the required UIN Type and UIN Label options → click Save and Close.

Item Induction Checker

ToolItem Validation & RMS Pre-Check Tool (Excel VBA)
Version2.0 · September 30, 2026
Used withItem Induction Template

What it is

The Item Induction Checker is an Excel macro that pre-validates an Item Induction Template before it's submitted or uploaded to RMS. It checks every row on the main sheet and on the Location tab:

  • formats and allowed drop-down values
  • required fields for the selected Action
  • relationships between fields (for example, Case Size must be a multiple of Inner Size)
  • live RMS lookups: suppliers, GTINs, hierarchy, Diff IDs, UDAs and retail

Problems are highlighted on the sheet, so you can fix common errors before they turn into failed uploads.

  • Header-driven: it finds columns by their header names in row 7, so inserted or reordered columns still work as long as the headers are unchanged.
  • Data range: rows 8–1000 on the main sheet. The Location tab uses row 2 for its headers.
  • Actions with specific rules: Create Item Family, Add Tran Item or GTIN, Add Item Supplier and Add Item Supp Country Dimension. General checks apply to every active row.
⚠
A clean result means the template passed the checks built into this version of the macro. It doesn't replace normal review or guarantee the upload will succeed in RMS.

When a new supplier, UDA, brand or size is created in RMS, the checker's lookup tables need updating. See Updating Template Checker Tables.

Running the Checker

  1. Fill out the Item Induction Template as normal, using the values for the Action on each row.
  2. With the template's main sheet active, run the validation macro.
  3. Read the completion message and the results in cells A2–A4.
  4. Review every highlighted cell. Many also have a cell comment with the exact reason or the correct value.
  5. Fix the data and run the checker again. Repeat until A3 reads Successful, No Errors were Found, then save.
ResultWhat it means / what to do
A2Your login and the time the check ran.
A3: Successful, No Errors were FoundEvery check passed. Save the template.
A3: Errors were found, Please visually Review, Correct, and SaveAt least one check failed. Fix the highlighted cells and run it again.
A4Summary of the error categories found (the same list as the pop-up).
Cell commentSpecific detail, such as the missing headers, the RMS value, an invalid UDA, a flagged word or a character count.

Reading the Highlights

LookColorMeaning
AbcOrangeGeneral validation failure or missing required field.
AbcYellowSize description (RMS Size / Diff ID) not found in RMS.DIFF_IDS.
AbcLight red / pinkThe item or GTIN already exists in RMS, or another RMS conflict.
AbcLight yellowDuplicate values within the worksheet.
AbcPurpleDept/Class/Subclass on an Add Tran Item or GTIN row doesn't match RMS for the parent.
AbcLight orange / brown (description)Brand name missing from the start of the Parent Item Description.
AbcLight blue (description)Parent description has proper-case and/or spelling, size, color or unit issues.
AbcLight purple (description)The same Parent Description is used for more than one Family ID.
AbcRed, bold wordThat word is a possible misspelling or a size/color/unit word.
AbcUnderlined wordThat word isn't in proper case.

Swatches are approximate; text in highlighted cells is dark red unless noted.

Required Fields by Action

ErrorWhat it meansHow to fix itExceptions / notes
Rows Missing Required (Red Header) Fields for 'Create Item Family'A Create Item Family row has a blank field whose row-7 header is red (required).Fill in every applicable red-header field. The Action cell comment lists what's missing.Supplier Color can be blank when NRF Color Code is 000. The six dimension/packaging fields can be blank when the dept doesn't require dimensions (see Dept rules).
Individual Required Fields Missing for 'Create Item Family'A specific required field on a Create Item Family row is blank.Enter a value in the highlighted field.Field-level count behind the category above.
'Create Item Family' Rows with Parent Item / Transaction Item PopulatedParent Item and/or Transaction Item has data on a Create Item Family row.Clear both. They're assigned later in the process.Both must be blank for this Action.
Item Family ID Invalid (Over 25 Characters or Numbers Only)Family ID is longer than 25 characters or is digits only.Use 25 characters or fewer, and not numbers only.Only checked when Family ID is filled in.
Missing Required FieldsInner Size, Case Size, Ti or Hi is blank.Fill in Inner Size, Case Size, Ti and Hi.Skipped for Add Item Supp Country Dimension.
'Add Item Supplier' Required FieldsSupplier Site, Primary Supplier Ind, Unit Cost or Buyer is blank on an Add Item Supplier row.Fill in the missing field(s).VPN is not required by this rule.
'Add Item Supplier' Rows Missing Family ID / Parent Item / Transaction ItemThe row has no identifier.Enter at least one of Item Family ID, Parent Item or Transaction Item.Any one of the three is enough.
'Add Tran Item or GTIN' Required FieldsInitial Retail, Supplier Site, Unit Cost or Buyer is blank.Fill in the missing field(s).Applies when those headers exist in the template.

Supplier & Packaging

ErrorWhat it meansHow to fix itExceptions / notes
Multiple Primary Suppliers ('YES' in Col BG)More than one Add Item Supplier row for the same item is marked Primary Supplier Ind = YES.Leave only the intended primary supplier as Yes.Rows are matched by Family ID, Parent Item or Transaction Item.
Supplier Site Not Numbers Only (Col BE)Supplier Site has a non-digit character, including a hidden leading/trailing space.Re-enter it as digits only.Blank is skipped.
Supplier Site Not Found in rms.supsThe supplier site doesn't exist in RMS.Check the number in RMS and use a valid supplier.Each unique site is looked up once.
Case Size not a multiple of Inner SizeCase Size ÷ Inner Size isn't a whole number.Correct Case Size or Inner Size.Runs when both are numbers greater than zero.
Multiple 'Case' / 'Each' / 'Inner' / 'Pallet' / 'Outer' Package Type Entries for Same Family ID + GTINMore than one row for the same Family ID + GTIN has the same Package Type.Keep one row of each package type per Family ID + GTIN.Different GTINs under the same Family ID can each have their own rows.
Duplicate Supplier Site on 'Add Item Supplier': Already Established on 'Create Item Family' RowAn Add Item Supplier row repeats the Family ID + Supplier Site from that family's Create Item Family row.Remove the redundant row, or correct the Family ID/Supplier Site.

Descriptions & Brand

ErrorWhat it meansHow to fix itExceptions / notes
Missing Brand Name at startThe Parent Item Description doesn't start with the Brand.Start the Parent Item Description with the brand.Skipped if the description contains "S/O". Apostrophes can be left out, and a first-word match is accepted.
Brand Must Be All Capital LettersBrand contains lowercase letters.Enter the Brand in all caps.
Brand Not Found (Exact Match) in Brand ListBrand doesn't exactly match column A of the brand list (X:\shared\folder\Brand2.xls).Use the exact spelling of the approved brand.If the brand list can't be opened, this check is skipped.
Parent Description Not in Proper CaseOne or more words aren't in proper case (underlined).Capitalize the first letter of each underlined word.Brand words are exempt.
Parent Desc Spelling/Size/Color ErrorA word is a possible misspelling or a size/color/unit word that shouldn't be in the description (red, bold).Read the comment, then fix the spelling or remove the size/color/unit word.Words with numbers, the brand, and Mens/Womens are handled specially.
Color Desc '[value]' Found In Parent DescThe NRF Color Description is repeated in the Parent Item Description.Remove the color from the parent description; keep it in NRF Color Description.Not case-sensitive.
Family ID / Description MismatchesThe same Parent Description is used with more than one Family ID.Make sure each parent description belongs to the right Family ID.
Parent Description Exceeds 100 Character LimitParent Item Description is over 100 characters.Shorten it to 100 characters or fewer.The comment shows the current count.
Parent / Transaction / Web Description: Prohibited Special Character(s) FoundThe description contains ! @ & $ ™ ® © ?Remove the flagged characters.The comment names the characters found.
💡
OK to submit after review: spelling and proper-case findings can be submitted when you've confirmed the vendor's wording is correct. The spell check uses Microsoft's dictionary and can flag legitimate brand stylings.

Color, UDA & E-Commerce Fields

ErrorWhat it meansHow to fix itExceptions / notes
Missing Color Description in Column AA (Color Code not 000)NRF Color Code isn't 000 but NRF Color Description is blank.Enter the NRF Color Description.Skipped for Add Item Supp Country Dimension and Add Item Supplier.
Invalid NRF Color Code (must be 000-999, 3 digits)NRF Color Code isn't exactly three digits.Enter a zero-padded code such as 001 or 042.
Invalid Color Description in Column CDEcomm Color Family isn't an approved value.Use one of: 1 - BLACK, 2 - GREY, 3 - SILVER, 4 - WHITE, 5 - IVORY, 6 - BROWN, 7 - TAN, 8 - GREEN, 9 - BLUE, 10 - PURPLE, 11 - RED, 12 - PINK, 13 - YELLOW, 14 - GOLD, 15 - ORANGE, 16 - METALLIC, 17 - MULTI, 18 - NO COLOR.Blank is allowed.
Invalid Yes/No Value in Column CEEcomm Warranty is blank or not an allowed value.Use 1 - YES or 2 - NO.
Invalid Gender Value in Column CFEcomm Gender isn't an accepted value.Use 1 - MEN'S, 2 - WOMEN'S, 3 - BOYS', 4 - GIRLS', 5 - BABY or 6 - GENDER NEUTRAL (versions without apostrophes are also accepted).Blank is allowed.
Missing Required UDA ID for Dept/Class/SubclassThe hierarchy requires a specific UDA ID with a value, and it's missing.Add the required UDA ID and its value (see the table below).
Invalid UDA ID/Value pairsThe UDA ID + UDA Value combination doesn't exist in RMS.Check both against RMS and correct the pair.

Required UDAs by hierarchy

DeptClassSubclassRequired UDA ID
34616013543
19210013301
183AnyAny538
8211301Any472
53111014554

Department-Specific Rules

ErrorWhat it meansHow to fix itExceptions / notes
Dept Requires Perishable Input (Blank Not Allowed)The dept requires the Perishable field and it's blank.Enter Yes or No.Either value is fine; only blank is an error.
Dept Not Eligible for Ecomm Warranty Plan but '1 - Yes' Was SelectedEcomm Warranty is 1 - Yes for a dept that isn't eligible.Change it to 2 - No.Eligible depts accept either value.
Dept Requires Item Type = 'Consignment/Concession'The dept is consignment-only, but Item Type isn't Consignment/Concession.Set Item Type to Consignment/Concession.
Rows Missing Consignment Rate for 'Consignment/Concession' Item TypeItem Type is Consignment/Concession but Consignment Rate is blank.Enter the Consignment Rate.

Perishable required:

551590593597598603604634635644722826837846850879884961962965966967973974991

Ecomm Warranty eligible:

71271411439449510551554579581582583584585586587589597603604632636638640645661722797811815816817819821823826837838845850851852853854855857859860861863864879884931992

Consignment/Concession required:

366370371372373374375376535587633713716822858888

Dimensions required (Create Item Family): Package Type, Depth, Width, Height, Gross Weight and Presentation Method are only required for these depts:

411439530531597598601603604631632633634636637638639640645646661680683711712715717722725730795796811816821826833834836837838839840845846856861863879889921930931940941961962965966967973974982983984991
ℹ
Exemptions from the dimension fields: Dept 884 + Class 1401, and Buyers 60, 90, 720 and 960.

GTIN / UPC & Sizes

ErrorWhat it meansHow to fix itExceptions / notes
GTIN Digit Count Mismatch vs Item Number TypeGTIN length doesn't match the Item Number Type.UCC12 = 12 digits, EAN/UCC-13 = 13, EAN/UCC-14 = 14.GENERATE (all caps only) is accepted as the system-generated placeholder.
GTIN Invalid Check DigitThe GTIN fails the GS1 check-digit calculation.Correct the GTIN; usually a mistyped digit.Only numeric GTINs are checked.
UPC found in rms.item_masterThe GTIN already exists as an item in RMS.Confirm whether that's intended; for a new item use an unused GTIN.GENERATE is excluded.
In-sheet Duplicate GTIN (Same Action)The same GTIN appears more than once for the same Action.Remove the duplicate or fix the GTIN/Action.Duplicates across different Actions aren't flagged.
Diff ID Does Not Exist in RMSRMS Size (Diff ID) isn't in RMS.DIFF_IDS.Use an existing Diff ID (see Look Up a Diff ID).
Diff ID & Size Group ID Not AttachedThe Size Group ID + RMS Size pair isn't set up in RMS.Use a size that belongs to that size group (see Which Diff Groups Contain a Diff ID).
NRF Color Code / RMS Size Already Built Under Parent ItemOn an Add Tran Item or GTIN row, that color + size already exists under the parent.Review the existing child item; don't create a duplicate.Color Code 262S is always exempt.

Retail & Hierarchy

ErrorWhat it meansHow to fix itExceptions / notes
Unit Retail mismatches vs RMS ParentOn an Add Tran Item or GTIN row, the Unit Retail doesn't match any retail of the parent's existing children.Use a matching retail, or confirm the new retail is correct.May be submitted after you verify the retail is correct.
Invalid Dept/Class/Subclass Combination (not found in rms.item_master)The hierarchy combination doesn't exist in RMS.Correct Dept, Class and/or Subclass.
Hierarchy Mismatch Dept/Class/SubclassOn an Add Tran Item or GTIN row, the hierarchy doesn't match the parent in RMS (purple).Match the sheet to RMS, or check the parent item.Takes priority over the RMS existence/duplicate highlighting on that row.
Family ID hierarchy consistencyRows with the same Family ID have different Dept/Class/Subclass.Use one hierarchy for the whole family.The comment shows the first hierarchy seen and the current row's.
Size Group consistency (Create Item Family)Create Item Family rows with the same Family ID have different Size Group IDs.Use one Size Group ID for the family.Highlighted on the Family ID cell.
Existing items in RMSThe item/child combination already exists in RMS.Review the existing item; correct the identifying fields if this should be new.
Dollar Sign '$' Found in Initial Retail / MSRP / Unit CostA price field contains $.Enter numbers only, e.g. 12.99.These fields are also reset to General number format.

Allowed Drop-Down Values

Filled-in fields must match these values exactly. Blank fields are skipped unless another rule requires them.

Field(s)Accepted values
StatusApproved; Submitted; Worksheet
Item TypeRegular Item; Consignment/Concession
Sellable, Orderable, Inventory, Primary Ref Ind, Aggregate By Color, Merchandise, Plan-o-gram Required, Primary Supplier Ind, Drop Ship Ind, Primary Source Country Ind, Primary Manufacture Country IndYes; No
Standard UOM, Selling UOM, Multi Unit UOMEA; GL; LB; LBS; PG; PR
Item Number TypeUCC12; EAN/UCC-13; MANL; EAN/UCC-14
Default UOPCS; EA; IN; PAL; GL; LB; LBS; PG; PR
Round LevelCase; Case/Layer; Case/Layer/Pallet; Layer; Layer/Pallet; Pallet
Weight UOMLB; LBS; OZ; G
Season ID23 - BASIC; 915 - S24; 916 - F24; 917 - S25; 918 - F25; 919 - SPR26; 920 - SUM26; 921 - FAL26; 922 - WNT26; 923 - SPR27; 924 - SUM27; 925 - FAL27; 926 - WNT27
Ticket Type01 - Vendor Preticket; 04 - Garment Tag; 05 - Gum Ticket; 07 - Jewelry Rattail
Package UOMEA; OZ; FZ; PG; PCS; L; PZ
Retail Label TypeCents Off; Extra Product; Pre-Priced
Handling TempKeep Frozen; Keep Hot; Keep Refridgerated; Keep at Room Temperature
Wastage TypeSales Wastage; Spoilage Wastage
PerishableYes; No
Presentation MethodPeggable Packaging; Stackable Packaging; Plan-o-gram Peggable; Plan-o-gram Stackable

Expired phases: a Phase ID can be on the allowed list and still be rejected once its season has ended ("Phase ID References an Already-Ended Season"). The comment gives the end date.

SeasonEnds
FAL2610/31/2026
WNT2601/31/2027
SPR2704/30/2027
SUM2707/31/2027
FAL2710/31/2027
WNT2701/31/2028

Countries: Source Country must be USA. Manufacture Country must be a valid three-letter code from the tool's built-in list of 246 codes.

Show accepted Manufacture Country codes
AACABWAEEAFGAGOAIAALBANDAPCAREARGARMASMATGAUSAUTAZEBDIBELBENBESBFABGDBGRBHRBHSBIHBLMBLRBLZBMUBOLBRABRBBRNBTNBWACAFCANCCKCHECHLCHNCIVCMRCODCOGCOKCOLCOMCPVCRICUBCUWCXRCYMCYPCZEDEUDIGDJIDMADNKDOMDZAECUEGYERIESPESTETHEUFINFJIFLKFRAFROFSMGABGBRGEOGHAGIBGINGLPGMBGNQGRCGRDGRLGTMGUFGUMGUYHKGHNDHRVHTIHUNICAIDNIMNINDIOTIRLIRNIRQISLISOISRITAJAMJORJPNKAZKENKGZKHMKIRKNAKORKOSKWTLAOLBNLBRLBYLCALIELKALSOLTLLUXLVAMACMAFMARMAUMCOMDAMDGMDVMEXMHLMKDMLIMLTMMRMNEMNGMNPMOZMRTMSRMTQMWIMYSMYTNAMNCLNFKNFLNGANGRNICNIUNLDNORNPLNRUNZLOMNPAKPANPCNPERPHLPLWPNGPOLPRIPRTPRYPSEPYFQATREUROURUSRWASAUSDNSENSGPSGSSHNSLBSLESLVSMRSOMSPMSRBSSDSTPSURSVKSVNSWESWZSXMSYCSYRTCATCDTGOTHATJKTKLTKMTLSTONTTOTUNTURTUVTWNTZAUAKUGAURYUSAUZBVCTVENVGBVIRVNMVUTWLFWSMXKXYEMZAFZMBZWE

Location Tab

ErrorWhat it meansHow to fix itExceptions / notes
'Location' Tab: Item / Location List / Location List - Primary Supp Not Numbers OnlyOne of these fields has a non-digit character or hidden space.Enter digits only.
'Location' Tab: Row Missing Both Item Family ID and ItemA Location row with data has neither Item Family ID nor Item.Enter one of them.Fully blank rows at the end aren't flagged.
Location Tab RequiredAn Action on the main sheet needs the Location tab, but it's missing or incomplete.Fill in the Location tab.Add Tran Item or GTIN and Add Item Supplier don't require it.
'Create Item Family' Family ID Not Found on Location TabA Create Item Family Family ID isn't on the Location tab.Add it to the Location tab, or correct the Family ID so both tabs agree.

Exceptions at a Glance

  • Create Item Family: Supplier Color can be blank when NRF Color Code = 000; the six dimension/packaging fields can be blank when the dept doesn't require dimensions.
  • Dept 884 + Class 1401 and Buyers 60, 90, 720, 960: exempt from the dimension/packaging fields.
  • Add Item Supp Country Dimension: skips the Inner Size / Case Size / Ti / Hi rule and the NRF Color Description check.
  • Add Item Supplier: VPN isn't required; any one of Family ID, Parent Item or Transaction Item is enough; skips the NRF Color Description check.
  • Brand at start of description: skipped when the description contains "S/O"; apostrophes can be left out.
  • GTIN: GENERATE (all caps) is accepted; duplicate GTINs are only compared within the same Action.
  • Color Code 262S is never flagged as an existing color/size under the parent.
  • Ecomm Warranty: only flagged when 1 - Yes is chosen for an ineligible dept.
  • Perishable depts: Yes or No are both fine; only blank is an error.
  • Location tab: only required when an Action on the main sheet needs it.
  • Brand list: if it can't be opened, the brand-exists check is skipped instead of failing every brand.
  • Phase expiration: only the seasons listed above are checked for expiry.

Fixing Errors: Recommended Order

  1. Start with the A4 summary to see which categories are present.
  2. Fix the orange required-field and format errors first.
  3. Read the cell comments for errors that give a specific RMS value, UDA ID, phase end date or description detail.
  4. On Add Tran Item or GTIN rows, fix hierarchy mismatches before looking into RMS duplicates on the same row.
  5. Resolve RMS existence and Diff/Size conflicts before treating a row as ready.
  6. Check duplicates across the whole sheet, not just the rows on screen.
  7. Run the checker again until A3 reads Successful, No Errors were Found, then save.

Troubleshooting

  • The checker validates the active worksheet, so start it from the template's main sheet.
  • Headers must stay in row 7 with data in rows 8–1000. If an optional header is missing from the template, its check is skipped.
  • If RMS can't be reached or an unexpected error happens, the tool shows a failure message instead of reporting success. Fix the connection and run it again.
  • While it runs, Excel events and calculation are paused and then restored. Initial Retail, MSRP and Unit Cost are set to General number format.
  • The brand list (X:\shared\folder\Brand2.xls) is opened read-only and hidden while the brand check runs.
  • When new seasons are added, the phase expiry dates in the macro also need updating, or the new phases won't be checked for expiry.

What's New in Version 2.0

  • Family ID consistency: rows with the same Family ID must share a Dept/Class/Subclass; Create Item Family rows must share a Size Group ID.
  • NRF Color Code format: exactly three digits, 000–999.
  • Dollar signs are flagged in Initial Retail, MSRP and Unit Cost.
  • Parent Description limited to 100 characters.
  • Prohibited characters (! @ & $ ™ ® © ?) checked in Parent, Transaction and Web descriptions.
  • GTIN check digit validated with the GS1 calculation.
  • Package-type duplicates now checked per Family ID + GTIN, covering Case, Each, Inner, Outer and Pallet.
  • Add Item Supplier redundancy: flags rows that repeat the Create Item Family supplier.
  • Add Tran Item or GTIN now requires Initial Retail, Supplier Site, Unit Cost and Buyer.
  • Header-driven processing: columns can be inserted, removed or reordered safely.

Updating Item Induction Template Checker Tables

Scope: Supplier, UDA, Brand, & Size

To update the template checker anytime a new Supplier, UDA, Brand, and/or Size has been created in RMS v16, follow the steps below:


Step 1: Run the Appropriate Query in SQL or Toad


a. UDA Query

SQL
SELECT U1.UDA_ID, U1.UDA_DESC, U2.UDA_VALUE, U2.UDA_VALUE_DESC 
FROM rms.uda u1, rms.UDA_VALUES u2 
WHERE U1.UDA_ID = U2.UDA_ID 
----AND u1.uda_id = 5261 
ORDER BY U1.UDA_ID, U2.UDA_VALUE;

b. Supplier Query

SQL
SELECT supplier, duns_number, supplier_parent, sup_name, sup_status, create_datetime
FROM rms.sups
ORDER BY supplier;

c. Size Query

SQL
SELECT DGD.DIFF_GROUP_ID, DGH.DIFF_GROUP_DESC, DI.DIFF_ID, DGD.CREATE_DATETIME,
       DGD.CREATE_ID, DGD.LAST_UPDATE_DATETIME, DGD.LAST_UPDATE_ID
FROM RMS.DIFF_GROUP_DETAIL dgd, RMS.DIFF_GROUP_HEAD dgh, RMS.DIFF_IDS di
WHERE DI.DIFF_ID = DGD.DIFF_ID
  AND DGD.DIFF_GROUP_ID = DGH.DIFF_GROUP_ID
  --AND DI.DIFF_ID = '0'
  AND DGD.DIFF_GROUP_ID <> 'COLOR'
  AND NOT (DI.DIFF_ID = '0' AND DGD.DIFF_GROUP_ID = '262S') 
  --AND DI.CREATE_DATETIME > sysdate - 30
  --AND DGD.DIFF_GROUP_ID = '232S'
ORDER BY DGD.DIFF_GROUP_ID, DGH.DIFF_GROUP_DESC, DI.DIFF_ID;

d. Brand Query

SQL
SELECT *
FROM rms.brand
ORDER BY BRAND_NAME;

e. Mandatory UDA Query

SQL
SELECT DISTINCT ud.dept, c.class, c.class_name, s.subclass, s.sub_name, ud.uda_id, u.uda_desc,
       ud.required_ind, ud.hierarchy_value, u.CREATE_ID, u.CREATE_DATETIME,
       uv.UDA_VALUE, uv.UDA_VALUE_DESC, uv.CREATE_ID, uv.CREATE_DATETIME 
FROM rms.uda_item_defaults ud, rms.uda u, rms.uda_values uv, rms.class c, rms.subclass s, rms.deps d 
WHERE ud.uda_id = u.uda_id  
  AND U.UDA_ID = uv.UDA_ID 
  AND d.dept = ud.dept 
  AND d.dept = c.dept 
  AND c.class = s.class 
  AND d.dept = s.dept 
  AND ud.class = c.class 
  AND ud.subclass = s.subclass 
  AND ud.required_ind = 'Y';

f. Buyer Number Query

SQL
SELECT D.DEPT, D.DEPT_NAME, D.GROUP_NO, D.BUYER, D.PURCHASE_TYPE 
FROM rms.deps d 
ORDER BY dept;

g. Hierarchy Query

SQL
SELECT dept || '.' || class || '.' || subclass AS key, s.* FROM RMS.SUBCLASS S 
ORDER BY dept, class, subclass;
  1. Once the query has been run, save over the current file located in X:\shared\folder
    File name must match exactly when being saved and must be formatted as “.xls”
    ie, UDA, SUPPLIERS, Size, Brand2, MandatoryUDAv16, DEPS
  2. Once new file(s) have been saved, files must be cleaned up prior to updating the Template Checker
    Rename the first tab ‘Sheet 1’
    Delete the second tab with the query details (labeled SQL)
  3. Update the Item Induction Template Assistant
  4. To update the Tables in the Item Induction Template Assistant, follow the below steps:

  5. Open current version of the Item Induction Template Assistant Access database
    Either click on the individual table you are wanted to update (Supplier, Brand, UDA, or Size) or click on Update All Tables, if you ran all queries
  6. Close out and re-open; tables should be up to date
  7. Once Template Assistant Updated

  8. Once the checker tables are updated, copy the data for the Brand, UDA (filter to WEB MSTER UDA and delete rows), and Size files into <X:\shared\folder Team\ORUP\QRGs\Added to HUB>
  9. Have person in charge update the HUB accordingly! Click

Web Brand Creation / Deletion — RMS v16

Last RevisedMarch 11, 2024
AuthorC. Triba / J. Parker / S. McGregor
SystemsRMS v16, SQL Developer, Outlook
ApproverName Redacted, Manager DST

Brand Name — Vendor-provided brand name attached to items going to the Web.
Brand UDA — UDA created to accompany the Brand Name. A Brand Name cannot exist without a matching UDA.

⚠
There cannot be a Brand Name without a coinciding UDA for it

Creating a New Web Brand Name

⚠
All new Web Brand Name requests must be approved by a Senior Merchandising Analyst before creation in RMS v16. Senior MAs will not research Essentials Food, Beer, Beverage, Wine, Spirits, or Overseas Brands — DST must research these.
  1. Forward the buying team's email (with the Web Brand template attachment) to the Senior MAs and wait for approval.
    ***Senior MAs will specify the case format for the Brand Description and UDA Value Description.
  2. In RMS v16:
    Tasks → Foundation Data → Data Loading → Download
  3. ☰ ORACLE Merchandising
    ❓
    Download Data ×
    ▼
    ▼
  4. Click Download. Open the downloaded file in Microsoft Excel
  5. Opening Brands - 12.28.18 10.35 AM.ods

    You have chosen to open:

    ≡
    What should Firefox do with this file?
    Microsoft Excel (default) ▼
  6. On the Brands tab:
    clear all data below headers (Row 1), then fill in:
      • Action (A): CREATE
      • Brand Name (B): Brand name in ALL CAPS
      • Brand Description (C): Brand name per Senior MA instruction
  7. Repeat for each additional brand. Save as .ods file to:
    📁X:\shared\folder
    Save as "Brand UDA Updates *Date*
  8. In RMS v16:
    Tasks → Foundation Data → Data Loading → Upload
    Set Template Type: Items, Template: Brands, browse to your .ods file → Upload File
  9. If no notification received → brand created successfully. If notification received → error occurred, check issues and troubleshoot using the query below.
SQL
-- Check upload status (use lowercase RMS v16 User ID)
SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date,
       s.process_id, s.process_desc, s.status, s.user_id, s.file_path
FROM rms.svc_process_tracker s
WHERE user_id = 'yourusernamehere'
ORDER BY action_date DESC;

Creating a New Web Brand UDA (Part 2)

ℹ
Current Web Brand Master UDA IDs: 9639, 10338, 10339, 10340, 10341, 35001, 35002, 85002, 85003, 85004, 85005, 85006, 85007. Max 999 UDA Values per UDA ID.
  1. In RMS v16:
    Tasks → Foundation Data → Data Loading → Download.
    Template Type: Items,
    Template: User Defined Attributes (UDA) → Download → Open in Excel.
  2. ☰ ORACLE Merchandising
    ❓
    Download Data ×
    ▼
    ▼
  3. Click Download. Open the downloaded file in Microsoft Excel.
  4. Opening Brands - 12.28.18 10.35 AM.ods

    You have chosen to open:

    ≡
    What should Firefox do with this file?
    Microsoft Excel (default) ▼
  5. The spreadsheet will have 5 tabs: UDAs, UDA_Translations, UDA_Values, UDA_Value_Translations, UDA_Defaults.
    Clear all data below headers on all tabs.
  6. On the UDA_Values tab:
      • Action (A): Create
      • UDA (B): 85006
      • UDA Value (C): Next available numerical value
      • UDA Value Description: Brand Description from Part 1
  7. Save as .odsto 📁X:\shared\folder
    Save as "Brand UDA Updates *Date* Upload via Tasks → Data Loading → Upload
    Template Type: Items
    Template: User Defined Attributes (UDA).
  8. If no notification received → brand created successfully. If notification received → error occurred, check issues and troubleshoot using the query below.
  9. SQL
    -- Check upload status (use lowercase RMS v16 User ID)
    SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date,
           s.process_id, s.process_desc, s.status, s.user_id, s.file_path
    FROM rms.svc_process_tracker s
    WHERE user_id = 'yourusernamehere'
    ORDER BY action_date DESC;
  10. For PE, click on Data Loading Status notification → View Issues → Correct error as needed
  11. Run queries included in index so the new Web Brand can added to the Quick Reference Guide (QRG) listing on the SharePoint HUB via Senior Supply Chain Tech or Data Steward Team Manager
  12. Reply back to email

    Reply back to users email informing them that the new Web Brand request was processed and created:

    Web Brand Request
    Hi,
    
    New Web Brand request has been created. Please use the below in the Brand Column (AN) on the Item Induction template: 
    
    *Provide newly created Web Brand Name in ALL CAPS*

Deleting a Web Brand Name

  1. In RMS v16:
    Tasks → Foundation Data → Data Loading → Download.
    Template Type: Items
    Template: Brands → Download → Open in Excel.
  2. ☰ ORACLE Merchandising
    ❓
    Download Data ×
    ▼
    ▼
  3. On the "Brands" tab:
    Add filter to the Header Row (Row 1)
    Search/Select the Brand Name wanting to delete
    Action (A) - select DELETE from the drop-down
    Filter Action (A) to show the updates only (uncheck Delete from the listing)
    Delete all Update rows
    Remove Filter so that only the Delete Brands are showing
    Repeat previous steps as needed if deleting more than one Brand Name
    Save as an .ods file
  4. Save as .ods file to:
    📁X:\shared\folder
    *Save as Brand Deletes (todays date)
  5. In RMS v16:
    Tasks → Foundation Data → Data Loading → Upload
    Set
    Template Type: Items
    Template: Brands
    browse to your .ods file → Upload File
  6. If no notification received → brand created successfully. If notification received → error occurred, check issues and troubleshoot using the query below.
  7. SQL
    -- Check upload status (use lowercase RMS v16 User ID)
    SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date,
           s.process_id, s.process_desc, s.status, s.user_id, s.file_path
    FROM rms.svc_process_tracker s
    WHERE user_id = 'yourusernamehere'
    ORDER BY action_date DESC;
  8. Correct errors as needed

Deleting UDAs [ID] and/or UDA Values

  1. In RMS v16:
    Tasks → Foundation Data → Data Loading → Download.
    Template Type: Items,
    Template: User Defined Attributes (UDA) → Download → Open in Excel.
  2. Go to tab you are deleting from (UDAs/UDA Values):
  3. Add filter to the Header Row (Row 1)
  4. Search/Select the UDA (ID) and/or UDA Value wanting to delete; search by either number or name
  5. Action (A) - select DELETE from the drop-down
  6. Filter Action (A) to show the updates only (uncheck Delete from the listing)
  7. Delete all Update rows
  8. Remove Filter so that only the Delete UDA (ID) and or UDA Value are showing
  9. Repeat previous steps as needed if deleting more than one Brand Name
  10. Save as .ods file to:
    📁Code M\Code MS\Data Steward\UDA Creation v16
    Save as "Brand Deletes *Date*
  11. In RMS v16:
    Tasks → Foundation Data → Data Loading → Upload
    Set:
    Template Type:Items
    Template: Brands
    browse to your .ods file → Upload File
  12. If no notification received → brand created successfully. If notification received → error occurred, check issues and troubleshoot using the query below.
SQL
-- Check upload status (use lowercase RMS v16 User ID)
SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date,
       s.process_id, s.process_desc, s.status, s.user_id, s.file_path
FROM rms.svc_process_tracker s
WHERE user_id = 'yourusernamehere'
ORDER BY action_date DESC;

Finding Missing UDAs

⚠
When deleting Brands the corresponding Brand UDA will also need to be removed, as previously stated. Once a year a Web Master Brand UDA query should be ran to fill and try to capture all the missing numbers in the 999 long UDA listing

To find missing UDAs in the sequence run the following query:

SQL
SELECT U1.UDA_ID, U1.UDA_DESC, U2.UDA_VALUE, U2.UDA_VALUE_DESC 
FROM rms.uda u1, rms.UDA_VALUES u2 
WHERE U1.UDA_ID = U2.UDA_ID 
AND u1.uda_id IN ('9639', '10339', '10340', '10341')
ORDER BY U1.UDA_ID, U2.UDA_VALUE;
  1. Create a column with the numbers 1-999 (as that’s how many UDA Values are in any completed UDA ID)
  2. Apply Conditional Formatting to the columns with the UDA Values and the column that numbers 1-999 were added to
  3. Add a Filter to the top row with Headers and filter by 'Filter by Color' > 'No Fill" on the newly added - this should show you which UDAs are missing
  4. These are the UDA Value numbers that need to be re-used when building future Brands

  5. UDA_ID ▼ UDA_DESC ▼ UDA_VALUE ▼ UDA_VALUE_DESC ▼ Numbers to Match Up ▼
    400 9639 WEB MSTER BRANDS 400 Chicago Cutlery 399
    482 9639 WEB MSTER BRANDS 483 Coynes 481
    507 9639 WEB MSTER BRANDS 509 Custom Leather 506
    580 9639 WEB MSTER BRANDS 586 Dream Modes 579
    581 9639 WEB MSTER BRANDS 587 Dream Star 580
    582 9639 WEB MSTER BRANDS 588 Dry Idea 581
    585 9639 WEB MSTER BRANDS 591 Dynamic Designs 584
    667 9639 WEB MSTER BRANDS 674 Fantasia 666
    802 9639 WEB MSTER BRANDS 810 Gramicci 801

    Queries

    SQL
    ---Full list of Brands---
    SELECT *
    FROM rms.brand
    ORDER BY BRAND_NAME;
    SQL
    ---Full List of UDA's with Descriptions---
    SELECT U1.UDA_ID, U1.UDA_DESC, U2.UDA_VALUE,
           U2.UDA_VALUE_DESC 
    FROM rms.uda u1, rms.UDA_VALUES u2 
    WHERE U1.UDA_ID = U2.UDA_ID 
    ----and u1.uda_id = 5261 
    ORDER BY U1.UDA_ID, U2.UDA_VALUE;

    Creating New Brand UDA IDs

    When we are running low on the current UDA ID's count for new brands.

    1. Follow the Report UDA procedure for details on how to create a new reporting UDA with the naming format "WEB MSTER BRANDS #", replacing # with the next in the series.
    2. ⚠
      There must be at LEAST one UDA value added when creating NEW brand UDA IDs.
    3. Once the new brand Reporting UDA ID and value(s) are created, add them to the following list.
    4. To find the newly build report UDA IDs, go to: Tasks > Foundation Data > Data Loading > Download
      Template Type: Items
      Template: User Defined Attributes (UDA)
    5. Download the file, and filter by "WEB MSTER BRANDS" in the UDAs tab. Note the newest one's UDA ID may be different from what was submitted earlier in the process.
    6. Delete all but the newly created WEB MSTER BRANDS # from the UDAs tab, and filter the UDA_Values tab by that UDA_ID. Then save this for the incident to be submitted in the following step.
    7. ⚠
      Current Brand UDA IDs: '9639', '10339', '10340', '10341', '35001', '35002', '85002', '85003', '85004', '85005', '85006, '85007'
    8. Lookup Create an incident (based on IN# ) to have RAVE link the new brand udas to the brand file.
    9. Incident Summary: Brand UDA newly created to update code_detail table

      Description: "We created new Brand UDA values. The Brand UDA IDs are - "35001" and "35002" and need to be added/updated in the code_detail table." -- Reference IN#IN1733034

      You will also need to attach the reporting UDAs that were added + the UDA values. You can get this from downloading the UDAs, or from updating the uploaded file with the correct UDA IDs in place of the placeholders.


      Action UDA UDA Description Display Type Data Type Data Length Single Value?
      Create 85002 WEB MSTER BRANDS 7 List of Values Alphanumeric No
      Action UDA UDA Value UDA Value Description
      Create 85002 1 REBER

    Queries

    SQL
    ---Full list of Brands---
    SELECT *
    FROM rms.brand
    ORDER BY BRAND_NAME;
    SQL
    ---Full List of UDA's with Descriptions---
    SELECT U1.UDA_ID, U1.UDA_DESC, U2.UDA_VALUE,
           U2.UDA_VALUE_DESC 
    FROM rms.uda u1, rms.UDA_VALUES u2 
    WHERE U1.UDA_ID = U2.UDA_ID 
    ----and u1.uda_id = 5261 
    ORDER BY U1.UDA_ID, U2.UDA_VALUE;

Third Party Gift Cards (TPGC)

What it is

Third Party Gift Cards (TPGC) are gift cards from outside brands such as Starbucks, Target or Visa that are sold at the register. They are built in RMS as non-merchandise items, so they never flow to Xadmin on their own. Instead, each card is loaded into Xadmin through a set of .mnt (maintenance) files created with the MNT Creator workbook, most quickly by using the TPGC Cheat Sheet. The STS team is also given the card details so sales audit treats them correctly, and ORUP is told about the new RINs so the Non-Merchandise Master File stays current.

⚠
Do NOT create Third Party Gift Cards in Xadmin. They must be input into Xadmin through a series of MNT (maintenance) files.
Third Party Gift Card workflow: create in RMS as non-merchandise, create and upload the STS spreadsheet, create an incident ticket, complete the needed converter tabs for the card type, press Ctrl+Shift+M after each tab, then upload to Xadmin or ask Store Systems to deploy.

Create Third Party Gift Cards in RMS as Non-Merchandise

  1. If creating the item via the front end, be sure to deselect the Merchandise check box.
  2. If creating the item via induction, change column AS (Merchandise) from Y to N.
  3. Item Loc Trait Qty/Key Options = Prohibited
  4. Electronic Market Basket Code = Gift Card
  5. Manual Price Entry = Required for Range cards and Prohibited for Fixed cards
  6. Returnable = No
Flow of RMS settings: deselect Merchandise or change column AS to N, Qty/Key Prohibited, Electronic Market Basket Code Gift Card, Manual Price Entry Required for Range and Prohibited for Fixed, Returnable No.
ℹ
Note: Non-merchandise items should not have locations ranged to them, so they do not flow to Xadmin.

Card Types & MNT Files Needed

Every TPGC is one of four types, based on whether its value is fixed or a range, and whether a fee is charged on top.

Card typeExample
Fixed – No FeeStarbucks $10 Gift Card
Fixed – FeeVisa $50 Gift Card, 1.5% fee
Range – No FeeTarget $10–$500 Gift Card
Range – FeeVisa $10–$500 Gift Card, 1.5% fee

Depending on the type of card, you may need to create up to four .mnt files. Each one is named after the tab in the MNT Creator workbook that produces it. There is no required order of deployment, but all files for a card must be deployed on the same day.

Card typeMNT files (tabs) needed
Fixed – No FeeTPGCNonMerchandise · TPGC_UPC · ItemPriceAction
Fixed – FeeTPGCNonMerchandise · TPGC_UPC · TPGCAttachFee · ItemPriceAction
Range – No FeeTPGCNonMerchandise · TPGC_UPC · GCITMProperties
Range – FeeTPGCNonMerchandise · TPGC_UPC · GCITMProperties · TPGCAttachFee

What each tab does:

  • TPGCNonMerchandise – enters all the details of the gift card.
  • TPGC_UPC – attaches a UPC to the gift card.
  • ItemPriceAction – assigns a retail price to a fixed price card.
  • GCITMProperties – sets the minimum and maximum value of a range card.
  • TPGCAttachFee – attaches the fee item to a card that carries a fee.
The four TPGC card types: Fixed No Fee, Fixed Fee, Range No Fee and Range Fee.

TPGC Cheat Sheet: Automated MNT Creation

The TPGC Cheat Sheet is a macro-enabled workbook that streamlines the MNT Master Creator inputs. Instead of filling out up to five converter tabs by hand and pressing Ctrl+Shift+M on each one, you enter one row per gift card on the cheat sheet and click Export. The ExportTPGC macro routes each row by its card type, writes the right rows and default values into every tab the card needs, keeps those tabs in sync, and then builds all the .mnt files in one pass.

TPGC Cheat Sheet Macro-enabled Excel workbook (.xlsm) · contains the ExportTPGC and CreateTPGCMNTFiles macros
Download
MNT Master Creator (2026_01) Macro-enabled Excel workbook (.xlsm) · the converter workbook the cheat sheet exports into; Ctrl+Shift+M creates an MNT file from the active tab
Download

Download both workbooks. Keep the Master Creator's file name as CreateMNTFile_MasterCreator_2026_01.xlsm. The cheat sheet finds it by that name.

How it fits into the TPGC process

  1. Build the gift cards in RMS as non-merchandise (see above) so each card has its transaction-level RIN.
  2. Fill in the TPGC Cheat Sheet, one row per card.
  3. Click Export. The macro fills the MNT Master Creator tabs and creates the .mnt files. This replaces the manual tab-by-tab steps in Creating the Needed MNT Files and the tab guides that follow, which remain as a reference for what each column means and for one-off fixes.
  4. Continue as normal: STS spreadsheet, incident ticket, ORUP submission, and deployment into Xadmin.

What's in the workbook

TabPurpose
TPGCThe input sheet. Headers are on row 3; enter one gift card per row from row 4 down. Contains the Export button. Column N previews the first 11 digits of the UPC.
DST Use OnlyHelper that turns Group / Dept / Class / Subclass numbers into the merch level IDs (226G, 817D, 817-1300C, 817-1300-2S) so you can double-check what the macro will write.
GroupLookup list of every department with its name and group number. Use it to find the Group for a card's department.

TPGC tab columns

Column (row 3 header)What to enter
Type of Gift CardPick from the drop-down: Fixed Price NoFee, Fixed Price Fee, Price Range No Fee or Price Range Fee. Rows with no type are ignored.
Transaction Level RIN#The gift card's transaction RIN from RMS.
GroupGroup number only, e.g. 226. The macro adds the G.
DeptDepartment number only, e.g. 817.
ClassClass number only, e.g. 1300.
SubclassSubclass number only, e.g. 2.
Description with no Special CharactersUsed for both the Name and Description fields on TPGCNonMerchandise.
Price Range (Min)Range cards only. Minimum load value; $ and commas are allowed.
Price Range (Max)Range cards only. Maximum load value; must be greater than or equal to the minimum.
Fixed RetailFixed cards only. The card's retail price.
Fee Rins AssociatedFee cards only. Pick from the drop-down, e.g. 14243675 (3.95). The amount in parentheses is ignored. You can type more than one RIN separated by commas, spaces, semicolons, slashes or line breaks.
Effective DatesDate the price or fee takes effect. Required for Fixed cards and Fee cards.
GTIN/UPC#The card's full UPC or GTIN. The macro works out the first 11 digits.

Required fields and tabs filled, by card type

Card typeRequired on the cheat sheetMaster Creator tabs filled
Fixed Price NoFeeRIN, GTIN/UPC, Fixed Retail, Effective DateTPGC_UPC · TPGCNonMerchandise · ItemPriceAction
Fixed Price FeeSame as above + Fee RINSame as above + TPGCAttachFee (one row per fee RIN)
Price Range No FeeRIN, GTIN/UPC, Min, MaxTPGC_UPC · TPGCNonMerchandise · GCITMProperties (a MIN row and a MAX row)
Price Range FeeSame as above + Effective Date, Fee RINSame as above + TPGCAttachFee (one row per fee RIN)
ℹ
Group, Dept, Class, Subclass and Description are not checked. They are copied as entered, so make sure they match RMS.

Before you start

  • Enable macros. When the workbook opens, select Enable Content in the yellow security bar.
  • Master Creator location. The macro opens the TPGC MNT Master Creator workbook (CreateMNTFile_MasterCreator_2026_01.xlsm) from the shared templates folder (X:\shared\folder). If you downloaded the Master Creator from this page, or that drive isn't mapped, open the Master Creator first. The macro uses any open workbook with the same file name. Like the cheat sheet, the Master Creator is save-locked, so use it without saving and close it when you're done.
  • Start from a clean Master Creator. The macro adds rows below whatever is already on each tab, and the MNT files include every row on the tab. Clear old rows (or open a fresh copy) before exporting.
  • The cheat sheet cannot be saved. It carries a permanent save lock, so saving shows "This workbook is locked and cannot be saved again." Fill it in, export, and close without saving. Keep your source list somewhere else if you need to reuse it.

Using the cheat sheet

  1. Open TPGC_Cheat_Sheet.xlsm and enable content.
  2. On the TPGC tab, enter one row per gift card starting on row 4, using the column guide above.
  3. Stay on the TPGC tab and click the blue Export button. The macro reads whichever sheet is active, so don't run it from another tab.
  4. The macro checks that every header on row 3 is present, opens the Master Creator, and checks that each target tab and header exists. If anything is missing it stops and lists what it couldn't find, before writing anything.
  5. Each row is validated for its card type. A row is written only if it passes every check, so a card never ends up on some tabs but not others.
  6. A summary shows how many rows were exported for each card type, how many TPGCAttachFee and GCITMProperties rows were added, and any skipped rows with the reason (for example Row 7: missing/invalid Fixed Retail).
  7. Answer Yes to Create the MNT file(s) now?. Choose No if you want to review the Master Creator tabs first. The Master Creator is left open on the TPGC_UPC tab.
  8. A Check the data prompt lists each populated tab with its row count, last column and last cell value. If a count or last column looks wrong, select No: there is probably old or hidden data to delete below the last row or to the right of the last column.
  9. Choose the folder to save the files in (for example your U drive).
  10. One file is created per populated tab, named MNTCreation_<Tab>-<username><yyyy_mm_dd_hhmm>.mnt, and a final message lists them. Deploy them all on the same day.

What the macro fills in for you

ItemHow it is handled
UPCKeeps digits only, pads a UPC that lost its leading zeros back to 12 digits, strips extra leading zeros from a GTIN-13/14, then writes the first 11 digits as text so leading zeros survive.
Merch levelsBuilds <Group>G, <Dept>D, <Dept>-<Class>C and <Dept>-<Class>-<Subclass>S.
Name / DescriptionThe cheat sheet description goes into both fields.
RetailFormatted as 0.00.
DatesFormatted as YYYY-MM-DD.
Fee RINsReads every all-digit value, ignoring amounts in parentheses, and writes one TPGCAttachFee row for each.
Range valuesTwo GCITMProperties rows per card: TPGC_MIN_PRICE and TPGC_MAX_PRICE, type DECIMAL.
Fixed valuesEvery constant from the tab guides above, such as INSERT, ITEM_XREF, NON_PHYSICAL_ITEM, VOUCHER / NEX_ISSUE_XPAY_TPGC, PRICE_UPDATE_2, REGULAR_PRICE, ATTACHED_ITEMS, _commonAttachedItemsPrompt, * for worldwide and TRUE for Apply Immediately.
Card typeAttached Items FlagPrompt for Price Flag
Fixed Price NoFee00
Fixed Price Fee10
Price Range No Fee01
Price Range Fee11

Columns are found by their header text, ignoring case, spaces and line breaks, so the macro keeps working if columns are moved in either workbook, as long as the headers are unchanged.

Creating MNT files only

If you edit the Master Creator tabs by hand after exporting, you can rebuild the files without exporting again: press Alt+F8, select CreateTPGCMNTFiles and click Run. It goes straight to the Check the data prompt and folder picker. The output matches the original converter: rows 2 to the last row, columns joined with |, followed by one blank line.

Troubleshooting

MessageWhat to do
Could not find these headers on row 3A cheat sheet header was renamed or moved off row 3. Restore it, or download a fresh copy.
No data found below row 3Nothing is in the Type of Gift Card column, or the Export was run from another tab.
Could not open target workbookThe shared drive isn't mapped or the Master Creator moved. Open the Master Creator first (keeping its file name) and run Export again.
Tab '…' not found / Headers not found on '…'The open Master Creator is a different version. Use the current CreateMNTFile_MasterCreator_2026_01.xlsm.
Skipped rows in the summaryFix the listed fields. The rows that passed were already written, so clear the Master Creator tabs (or close it without saving) before exporting again to avoid duplicates.
This workbook is locked and cannot be saved againExpected: the cheat sheet is meant to be used without saving.
View the full macro code (ExportTPGC)
VBA · Module1
Option Explicit

'==============================================================================
' ExportTPGC
' Exports gift card setup rows from the active sheet (headers on row 3) into the
' TPGC MNT Master Creator workbook, routed by "Type of Gift Card", then builds
' pipe-delimited MNT files for every populated tab.
'
' Fixed Price NoFee ->
'   TPGC_UPC            : RIN#, first 11 of UPC, plus UPC_DEFAULTS
'   TPGCNonMerchandise  : RIN#, Description, Merch Levels 1-4, plus NM_NOFEE_DEFAULTS
'   ItemPriceAction     : RIN#, Fixed Retail, Effective Date, plus PRICE_DEFAULTS
'
' Fixed Price Fee ->
'   Same as NoFee, but TPGCNonMerchandise uses NM_FEE_DEFAULTS, and
'   TPGCAttachFee       : Gift card RIN#, Fee RIN#, Effective Date, plus AF_DEFAULTS
'                         (one row per fee RIN; amounts in parentheses are ignored)
'
' Price Range No Fee ->
'   TPGC_UPC            : same as Fixed Price
'   TPGCNonMerchandise  : NM_RANGE_NOFEE_DEFAULTS
'   GCITMProperties     : two rows per item - TPGC_MIN_PRICE and TPGC_MAX_PRICE
'
' Price Range Fee ->
'   Same as Price Range No Fee, but TPGCNonMerchandise uses NM_RANGE_FEE_DEFAULTS,
'   and TPGCAttachFee is populated as for Fixed Price Fee.
'
' MNT files: one per populated tab, rows 2..last, columns 1..last joined with "|",
' named MNTCreation_<Tab>-<Username><yyyy_mm_dd_hhmm>.mnt in a folder you pick.
' CreateTPGCMNTFiles can also be run on its own.
'
' All fee types set Attached Items Flag = 1 on TPGCNonMerchandise.
' A row is only written if it passes all checks, so every tab stays in sync.
' Columns are resolved by header text, ignoring case and all spaces/line breaks.
'==============================================================================

Private Const TARGET_PATH As String = "X:\shared\folder\CreateMNTFile_MasterCreator.xlsm"

Private Const SRC_HEADER_ROW As Long = 3
Private Const TGT_HEADER_ROW As Long = 1
Private Const TGT_FIRST_DATA_ROW As Long = 2

'--- Source headers ---------------------------------------------------------
Private Const H_TYPE As String = "Type of Gift Card"
Private Const H_RIN As String = "Transaction Level RIN#"
Private Const H_GROUP As String = "Group"
Private Const H_DEPT As String = "Dept"
Private Const H_CLASS As String = "Class"
Private Const H_SUBCLASS As String = "Subclass"
Private Const H_DESC As String = "Description with no Special Characters"
Private Const H_MIN As String = "Price Range (Min)"
Private Const H_MAX As String = "Price Range (Max)"
Private Const H_RETAIL As String = "Fixed Retail"
Private Const H_FEE As String = "Fee Rins Associated"
Private Const H_EFF As String = "Effective Dates"
Private Const H_GTIN As String = "GTIN/UPC#"

'--- TPGC_UPC tab (exact header match) --------------------------------------
Private Const TAB_UPC As String = "TPGC_UPC"
Private Const H_UPC_TRAN As String = "TPGC TRAN #"
Private Const H_UPC_UPC As String = "TRANSACTION  GC UPC(Only the first 11 digits)"

Private Const UPC_DEFAULTS As String = _
    "INSERT|INSERT~" & _
    "TABLE NAME|ITEM_XREF~" & _
    "Store Field (enter word STORE for store Specific. * for all stores)|*~" & _
    "Store Field (enter Store Loc number for store Specific. * for all stores)|*~" & _
    "APPLY IMMEDIATELY= TRUE|TRUE"

'--- TPGCNonMerchandise tab (header STARTS WITH match) -----------------------
Private Const TAB_NM As String = "TPGCNonMerchandise"
Private Const H_NM_ITEMID As String = "Item ID (PK)"
Private Const H_NM_NAME As String = "Name Name or short"
Private Const H_NM_DESC As String = "Description field"
Private Const H_NM_M1 As String = "Merch Level 1 Id"
Private Const H_NM_M2 As String = "Merch Level 2 Id"
Private Const H_NM_M3 As String = "Merch Level 3 Id"
Private Const H_NM_M4 As String = "Merch Level 4 Id"

' Fixed Price NoFee: Attached Items = 0, Prompt for Price = 0
Private Const NM_NOFEE_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|NON_PHYSICAL_ITEM~" & _
    "Item Level Code|ITEM~" & _
    "Not in the host doc Item Type Code|NON_PHYSICAL~" & _
    "Field:Unit of Measure Code|EA~" & _
    "Field: Qty Scale|1~" & _
    "Tax Group ID|0~" & _
    "Attached Items Flag|0~" & _
    "Force Quantity of One Flag|1~" & _
    "Disallow Discounts Flag|1~" & _
    "Prompt for Price Flag|0~" & _
    "Non-physical Item Type Code|VOUCHER~" & _
    "Non-physical Item Sub-type|NEX_ISSUE_XPAY_TPGC~" & _
    "Exclude From Net Sales Flag|1~" & _
    "Disallow Deals Flag|1~" & _
    "Org Code|*~" & _
    "Level Code (PK)|*~" & _
    "Disallow Selfcheckout Flag|1"

' Fixed Price Fee: Attached Items = 1, Prompt for Price = 0
Private Const NM_FEE_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|NON_PHYSICAL_ITEM~" & _
    "Item Level Code|ITEM~" & _
    "Not in the host doc Item Type Code|NON_PHYSICAL~" & _
    "Field:Unit of Measure Code|EA~" & _
    "Field: Qty Scale|1~" & _
    "Tax Group ID|0~" & _
    "Attached Items Flag|1~" & _
    "Force Quantity of One Flag|1~" & _
    "Disallow Discounts Flag|1~" & _
    "Prompt for Price Flag|0~" & _
    "Non-physical Item Type Code|VOUCHER~" & _
    "Non-physical Item Sub-type|NEX_ISSUE_XPAY_TPGC~" & _
    "Exclude From Net Sales Flag|1~" & _
    "Disallow Deals Flag|1~" & _
    "Org Code|*~" & _
    "Level Code (PK)|*~" & _
    "Disallow Selfcheckout Flag|1"

' Price Range No Fee: Attached Items = 0, Prompt for Price = 1
Private Const NM_RANGE_NOFEE_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|NON_PHYSICAL_ITEM~" & _
    "Item Level Code|ITEM~" & _
    "Not in the host doc Item Type Code|NON_PHYSICAL~" & _
    "Field:Unit of Measure Code|EA~" & _
    "Field: Qty Scale|1~" & _
    "Tax Group ID|0~" & _
    "Attached Items Flag|0~" & _
    "Force Quantity of One Flag|1~" & _
    "Disallow Discounts Flag|1~" & _
    "Prompt for Price Flag|1~" & _
    "Non-physical Item Type Code|VOUCHER~" & _
    "Non-physical Item Sub-type|NEX_ISSUE_XPAY_TPGC~" & _
    "Exclude From Net Sales Flag|1~" & _
    "Disallow Deals Flag|1~" & _
    "Org Code|*~" & _
    "Level Code (PK)|*~" & _
    "Disallow Selfcheckout Flag|1"

' Price Range Fee: Attached Items = 1, Prompt for Price = 1
Private Const NM_RANGE_FEE_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|NON_PHYSICAL_ITEM~" & _
    "Item Level Code|ITEM~" & _
    "Not in the host doc Item Type Code|NON_PHYSICAL~" & _
    "Field:Unit of Measure Code|EA~" & _
    "Field: Qty Scale|1~" & _
    "Tax Group ID|0~" & _
    "Attached Items Flag|1~" & _
    "Force Quantity of One Flag|1~" & _
    "Disallow Discounts Flag|1~" & _
    "Prompt for Price Flag|1~" & _
    "Non-physical Item Type Code|VOUCHER~" & _
    "Non-physical Item Sub-type|NEX_ISSUE_XPAY_TPGC~" & _
    "Exclude From Net Sales Flag|1~" & _
    "Disallow Deals Flag|1~" & _
    "Org Code|*~" & _
    "Level Code (PK)|*~" & _
    "Disallow Selfcheckout Flag|1"

'--- ItemPriceAction tab (header STARTS WITH match) --------------------------
Private Const TAB_PRICE As String = "ItemPriceAction"
Private Const H_PR_RIN As String = "TRANSACTION RIN"
Private Const H_PR_RETAIL As String = "RETAIL"
Private Const H_PR_EFF As String = "EFFECTIVE DATE"

Private Const PRICE_DEFAULTS As String = _
    "ACTION|INSERT~" & _
    "TABLE NAME|PRICE_UPDATE_2~" & _
    "PRICE REGULAR_PRICE|REGULAR_PRICE~" & _
    "Store Field|*~" & _
    "STORE #|*~" & _
    "FIELD|1"

'--- TPGCAttachFee tab (header STARTS WITH match) ----------------------------
Private Const TAB_AF As String = "TPGCAttachFee"
Private Const H_AF_SOLD As String = "Sold Item ID"
Private Const H_AF_ATTACHED As String = "Attached Item (PK)"
Private Const H_AF_EFF As String = "Effective Date and Time"

Private Const AF_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|ATTACHED_ITEMS~" & _
    "Quantity to Add|1~" & _
    "Association Type|_commonAttachedItemsPrompt~" & _
    "Level Code|*~" & _
    "Level Value|*"

'--- GCITMProperties tab (header STARTS WITH match) --------------------------
Private Const TAB_GCP As String = "GCITMProperties"
Private Const H_GCP_ITEMID As String = "Item Id (PK)"
Private Const H_GCP_PROP As String = "Property Code"
Private Const H_GCP_TYPE As String = "Type"
Private Const H_GCP_DEC As String = "Min/MAX Value"

Private Const GCP_TYPE_VALUE As String = "DECIMAL"
Private Const GCP_PROP_MIN As String = "TPGC_MIN_PRICE"
Private Const GCP_PROP_MAX As String = "TPGC_MAX_PRICE"

Private Const GCP_DEFAULTS As String = _
    "Action Code|INSERT~" & _
    "Record Identifier|ITEM_PROPERTY"

'--- Module state -----------------------------------------------------------
Private wsSrc As Worksheet
Private wsUPC As Worksheet
Private wsNM As Worksheet
Private wsPR As Worksheet
Private wsAF As Worksheet
Private wsGCP As Worksheet

Private cType As Long, cRin As Long, cGrp As Long, cDept As Long, cCls As Long
Private cSub As Long, cDesc As Long, cMin As Long, cMax As Long
Private cRetail As Long, cFee As Long, cEff As Long, cGtin As Long

Private cUpcTran As Long, cUpcUpc As Long
Private cNmId As Long, cNmName As Long, cNmDesc As Long
Private cNm1 As Long, cNm2 As Long, cNm3 As Long, cNm4 As Long
Private cPrRin As Long, cPrRetail As Long, cPrEff As Long
Private cAfSold As Long, cAfAtt As Long, cAfEff As Long
Private cGcpId As Long, cGcpProp As Long, cGcpType As Long, cGcpDec As Long

Private nextUPC As Long, nextNM As Long, nextPR As Long, nextAF As Long, nextGCP As Long

Private upcDefCols() As Long, upcDefVals() As String
Private nmNoFeeCols() As Long, nmNoFeeVals() As String
Private nmFeeCols() As Long, nmFeeVals() As String
Private nmRangeNoFeeCols() As Long, nmRangeNoFeeVals() As String
Private nmRangeFeeCols() As Long, nmRangeFeeVals() As String
Private prDefCols() As Long, prDefVals() As String
Private afDefCols() As Long, afDefVals() As String
Private gcpDefCols() As Long, gcpDefVals() As String

Private nNoFee As Long, nFee As Long, nRangeNoFee As Long, nRangeFee As Long
Private nAF As Long, nGCP As Long, nSkipped As Long
Private skipLog As String

'==============================================================================
' Main
'==============================================================================
Public Sub ExportTPGC()
    Dim wbTgt As Workbook, lastSrc As Long, r As Long
    Dim giftType As String, missing As String, summary As String

    On Error GoTo Fail
    nNoFee = 0: nFee = 0: nRangeNoFee = 0: nRangeFee = 0
    nAF = 0: nGCP = 0: nSkipped = 0: skipLog = ""
    Set wsSrc = ActiveSheet

    '--- Resolve source columns --------------------------------------------
    cType = ReqCol(wsSrc, SRC_HEADER_ROW, H_TYPE, False, missing)
    cRin = ReqCol(wsSrc, SRC_HEADER_ROW, H_RIN, False, missing)
    cGrp = ReqCol(wsSrc, SRC_HEADER_ROW, H_GROUP, False, missing)
    cDept = ReqCol(wsSrc, SRC_HEADER_ROW, H_DEPT, False, missing)
    cCls = ReqCol(wsSrc, SRC_HEADER_ROW, H_CLASS, False, missing)
    cSub = ReqCol(wsSrc, SRC_HEADER_ROW, H_SUBCLASS, False, missing)
    cDesc = ReqCol(wsSrc, SRC_HEADER_ROW, H_DESC, False, missing)
    cMin = ReqCol(wsSrc, SRC_HEADER_ROW, H_MIN, False, missing)
    cMax = ReqCol(wsSrc, SRC_HEADER_ROW, H_MAX, False, missing)
    cRetail = ReqCol(wsSrc, SRC_HEADER_ROW, H_RETAIL, False, missing)
    cFee = ReqCol(wsSrc, SRC_HEADER_ROW, H_FEE, False, missing)
    cEff = ReqCol(wsSrc, SRC_HEADER_ROW, H_EFF, False, missing)
    cGtin = ReqCol(wsSrc, SRC_HEADER_ROW, H_GTIN, False, missing)
    If missing <> "" Then
        MsgBox "Could not find these headers on row " & SRC_HEADER_ROW & ":" & vbCrLf & missing, _
               vbExclamation, "Export TPGC"
        Exit Sub
    End If

    lastSrc = wsSrc.Cells(wsSrc.Rows.Count, cType).End(xlUp).Row
    If lastSrc <= SRC_HEADER_ROW Then
        MsgBox "No data found below row " & SRC_HEADER_ROW & ".", vbInformation, "Export TPGC"
        Exit Sub
    End If

    '--- Open target workbook ------------------------------------------------
    Set wbTgt = GetOrOpenWorkbook(TARGET_PATH)
    If wbTgt Is Nothing Then
        MsgBox "Could not open target workbook:" & vbCrLf & TARGET_PATH, vbCritical, "Export TPGC"
        Exit Sub
    End If

    Application.ScreenUpdating = False

    '--- TPGC_UPC ------------------------------------------------------------
    Set wsUPC = ReqSheet(wbTgt, TAB_UPC)
    missing = ""
    cUpcTran = ReqCol(wsUPC, TGT_HEADER_ROW, H_UPC_TRAN, False, missing)
    cUpcUpc = ReqCol(wsUPC, TGT_HEADER_ROW, H_UPC_UPC, False, missing)
    If missing <> "" Then Err.Raise vbObjectError + 2, , "Headers not found on '" & TAB_UPC & "':" & vbCrLf & missing
    ResolveDefaults wsUPC, UPC_DEFAULTS, upcDefCols, upcDefVals, False
    nextUPC = NextEmptyRow(wsUPC, cUpcTran)

    '--- TPGCNonMerchandise --------------------------------------------------
    Set wsNM = ReqSheet(wbTgt, TAB_NM)
    missing = ""
    cNmId = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_ITEMID, True, missing)
    cNmName = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_NAME, True, missing)
    cNmDesc = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_DESC, True, missing)
    cNm1 = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_M1, True, missing)
    cNm2 = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_M2, True, missing)
    cNm3 = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_M3, True, missing)
    cNm4 = ReqCol(wsNM, TGT_HEADER_ROW, H_NM_M4, True, missing)
    If missing <> "" Then Err.Raise vbObjectError + 2, , "Headers not found on '" & TAB_NM & "':" & vbCrLf & missing
    ResolveDefaults wsNM, NM_NOFEE_DEFAULTS, nmNoFeeCols, nmNoFeeVals, True
    ResolveDefaults wsNM, NM_FEE_DEFAULTS, nmFeeCols, nmFeeVals, True
    ResolveDefaults wsNM, NM_RANGE_NOFEE_DEFAULTS, nmRangeNoFeeCols, nmRangeNoFeeVals, True
    ResolveDefaults wsNM, NM_RANGE_FEE_DEFAULTS, nmRangeFeeCols, nmRangeFeeVals, True
    nextNM = NextEmptyRow(wsNM, cNmId)

    '--- ItemPriceAction -----------------------------------------------------
    Set wsPR = ReqSheet(wbTgt, TAB_PRICE)
    missing = ""
    cPrRin = ReqCol(wsPR, TGT_HEADER_ROW, H_PR_RIN, True, missing)
    cPrRetail = ReqCol(wsPR, TGT_HEADER_ROW, H_PR_RETAIL, True, missing)
    cPrEff = ReqCol(wsPR, TGT_HEADER_ROW, H_PR_EFF, True, missing)
    If missing <> "" Then Err.Raise vbObjectError + 2, , "Headers not found on '" & TAB_PRICE & "':" & vbCrLf & missing
    ResolveDefaults wsPR, PRICE_DEFAULTS, prDefCols, prDefVals, True
    nextPR = NextEmptyRow(wsPR, cPrRin)

    '--- TPGCAttachFee -------------------------------------------------------
    Set wsAF = ReqSheet(wbTgt, TAB_AF)
    missing = ""
    cAfSold = ReqCol(wsAF, TGT_HEADER_ROW, H_AF_SOLD, True, missing)
    cAfAtt = ReqCol(wsAF, TGT_HEADER_ROW, H_AF_ATTACHED, True, missing)
    cAfEff = ReqCol(wsAF, TGT_HEADER_ROW, H_AF_EFF, True, missing)
    If missing <> "" Then Err.Raise vbObjectError + 2, , "Headers not found on '" & TAB_AF & "':" & vbCrLf & missing
    ResolveDefaults wsAF, AF_DEFAULTS, afDefCols, afDefVals, True
    nextAF = NextEmptyRow(wsAF, cAfSold)

    '--- GCITMProperties -----------------------------------------------------
    Set wsGCP = ReqSheet(wbTgt, TAB_GCP)
    missing = ""
    cGcpId = ReqCol(wsGCP, TGT_HEADER_ROW, H_GCP_ITEMID, True, missing)
    cGcpProp = ReqCol(wsGCP, TGT_HEADER_ROW, H_GCP_PROP, True, missing)
    cGcpType = ReqCol(wsGCP, TGT_HEADER_ROW, H_GCP_TYPE, True, missing)
    cGcpDec = ReqCol(wsGCP, TGT_HEADER_ROW, H_GCP_DEC, True, missing)
    If missing <> "" Then Err.Raise vbObjectError + 2, , "Headers not found on '" & TAB_GCP & "':" & vbCrLf & missing
    ResolveDefaults wsGCP, GCP_DEFAULTS, gcpDefCols, gcpDefVals, True
    nextGCP = NextEmptyRow(wsGCP, cGcpId)

    '--- Route each source row -----------------------------------------------
    For r = SRC_HEADER_ROW + 1 To lastSrc
        giftType = Norm(CStr(wsSrc.Cells(r, cType).Value))
        If giftType <> "" Then
            Select Case giftType
                Case Norm("Fixed Price NoFee")
                    ExportFixedPrice r, False
                Case Norm("Fixed Price Fee")
                    ExportFixedPrice r, True
                Case Norm("Price Range No Fee")
                    ExportPriceRange r, False
                Case Norm("Price Range Fee")
                    ExportPriceRange r, True
                Case Else
                    nSkipped = nSkipped + 1
                    skipLog = skipLog & "  Row " & r & ": unhandled type '" & _
                              wsSrc.Cells(r, cType).Value & "'" & vbCrLf
            End Select
        End If
    Next r

    Application.ScreenUpdating = True
    wbTgt.Activate
    wsUPC.Activate

    summary = "Export complete." & vbCrLf & vbCrLf & _
              "Fixed Price NoFee: " & nNoFee & " row(s)" & vbCrLf & _
              "Fixed Price Fee: " & nFee & " row(s)" & vbCrLf & _
              "Price Range No Fee: " & nRangeNoFee & " row(s)" & vbCrLf & _
              "Price Range Fee: " & nRangeFee & " row(s)" & vbCrLf & _
              TAB_AF & ": " & nAF & " row(s)" & vbCrLf & _
              TAB_GCP & ": " & nGCP & " row(s)" & vbCrLf & _
              "Skipped: " & nSkipped & IIf(nSkipped > 0, vbCrLf & vbCrLf & Left$(skipLog, 800), "")

    If nNoFee + nFee + nRangeNoFee + nRangeFee = 0 Then
        MsgBox summary, vbExclamation, "Export TPGC"
        Exit Sub
    End If

    If MsgBox(summary & vbCrLf & vbCrLf & "Create the MNT file(s) now?", _
              vbYesNo + IIf(nSkipped > 0, vbExclamation, vbQuestion), "Export TPGC") = vbYes Then
        CreateMNTFiles wbTgt
    End If
    Exit Sub

Fail:
    Application.ScreenUpdating = True
    MsgBox "Export failed:" & vbCrLf & Err.Description, vbCritical, "Export TPGC"
End Sub

'==============================================================================
' Standalone: build MNT files from the Master Creator's populated TPGC tabs
'==============================================================================
Public Sub CreateTPGCMNTFiles()
    Dim wb As Workbook
    Set wb = GetOrOpenWorkbook(TARGET_PATH)
    If wb Is Nothing Then
        MsgBox "Could not open target workbook:" & vbCrLf & TARGET_PATH, vbCritical, "Create MNT"
        Exit Sub
    End If
    CreateMNTFiles wb
End Sub

'==============================================================================
' Fixed Price (NoFee or Fee)
'==============================================================================
Private Sub ExportFixedPrice(ByVal r As Long, ByVal isFee As Boolean)
    Dim rin As String, upc11 As String, sRetail As String, sEff As String
    Dim problem As String, fees As Collection, fee As Variant

    rin = Trim$(CStr(wsSrc.Cells(r, cRin).Value))
    upc11 = UPCFirst11(wsSrc.Cells(r, cGtin).Value)
    sRetail = RetailText(wsSrc.Cells(r, cRetail).Value)
    sEff = DateText(wsSrc.Cells(r, cEff).Value)
    If isFee Then Set fees = ParseList(wsSrc.Cells(r, cFee).Value)

    If rin = "" Then problem = problem & "RIN#, "
    If upc11 = "" Then problem = problem & "GTIN/UPC#, "
    If sRetail = "" Then problem = problem & "Fixed Retail, "
    If sEff = "" Then problem = problem & "Effective Date, "
    If isFee Then
        If fees.Count = 0 Then problem = problem & "Fee RIN, "
    End If
    If problem <> "" Then LogSkip r, problem: Exit Sub

    WriteUPC r, upc11
    If isFee Then
        WriteNonMerch r, nmFeeCols, nmFeeVals
    Else
        WriteNonMerch r, nmNoFeeCols, nmNoFeeVals
    End If

    '--- ItemPriceAction ---
    WriteDefaults wsPR, nextPR, prDefCols, prDefVals
    wsPR.Cells(nextPR, cPrRin).Value = wsSrc.Cells(r, cRin).Value
    wsPR.Cells(nextPR, cPrRetail).NumberFormat = "@"
    wsPR.Cells(nextPR, cPrRetail).Value = sRetail
    wsPR.Cells(nextPR, cPrEff).NumberFormat = "@"
    wsPR.Cells(nextPR, cPrEff).Value = sEff
    nextPR = nextPR + 1

    '--- TPGCAttachFee (Fee only; one row per fee RIN) ---
    If isFee Then
        For Each fee In fees
            WriteAttachFee r, CStr(fee), sEff
        Next fee
        nFee = nFee + 1
    Else
        nNoFee = nNoFee + 1
    End If
End Sub

'==============================================================================
' Price Range (NoFee or Fee)
'==============================================================================
Private Sub ExportPriceRange(ByVal r As Long, ByVal isFee As Boolean)
    Dim rin As String, upc11 As String, sEff As String, problem As String
    Dim vMin As Variant, vMax As Variant, fees As Collection, fee As Variant

    rin = Trim$(CStr(wsSrc.Cells(r, cRin).Value))
    upc11 = UPCFirst11(wsSrc.Cells(r, cGtin).Value)
    vMin = NumValue(wsSrc.Cells(r, cMin).Value)
    vMax = NumValue(wsSrc.Cells(r, cMax).Value)
    If isFee Then
        sEff = DateText(wsSrc.Cells(r, cEff).Value)
        Set fees = ParseList(wsSrc.Cells(r, cFee).Value)
    End If

    If rin = "" Then problem = problem & "RIN#, "
    If upc11 = "" Then problem = problem & "GTIN/UPC#, "
    If IsEmpty(vMin) Then problem = problem & "Price Range (Min), "
    If IsEmpty(vMax) Then problem = problem & "Price Range (Max), "
    If Not IsEmpty(vMin) And Not IsEmpty(vMax) Then
        If vMin > vMax Then problem = problem & "Min greater than Max, "
    End If
    If isFee Then
        If sEff = "" Then problem = problem & "Effective Date, "
        If fees.Count = 0 Then problem = problem & "Fee RIN, "
    End If
    If problem <> "" Then LogSkip r, problem: Exit Sub

    WriteUPC r, upc11
    If isFee Then
        WriteNonMerch r, nmRangeFeeCols, nmRangeFeeVals
    Else
        WriteNonMerch r, nmRangeNoFeeCols, nmRangeNoFeeVals
    End If

    WriteItemProperty r, GCP_PROP_MIN, vMin
    WriteItemProperty r, GCP_PROP_MAX, vMax

    If isFee Then
        For Each fee In fees
            WriteAttachFee r, CStr(fee), sEff
        Next fee
        nRangeFee = nRangeFee + 1
    Else
        nRangeNoFee = nRangeNoFee + 1
    End If
End Sub

'==============================================================================
' Tab writers
'==============================================================================
Private Sub WriteUPC(ByVal r As Long, ByVal upc11 As String)
    WriteDefaults wsUPC, nextUPC, upcDefCols, upcDefVals
    wsUPC.Cells(nextUPC, cUpcTran).Value = wsSrc.Cells(r, cRin).Value
    wsUPC.Cells(nextUPC, cUpcUpc).NumberFormat = "@"   ' keep leading zeros
    wsUPC.Cells(nextUPC, cUpcUpc).Value = upc11
    nextUPC = nextUPC + 1
End Sub

Private Sub WriteNonMerch(ByVal r As Long, cols() As Long, vals() As String)
    Dim sGrp As String, sDept As String, sCls As String, sSub As String
    sGrp = Trim$(CStr(wsSrc.Cells(r, cGrp).Value))
    sDept = Trim$(CStr(wsSrc.Cells(r, cDept).Value))
    sCls = Trim$(CStr(wsSrc.Cells(r, cCls).Value))
    sSub = Trim$(CStr(wsSrc.Cells(r, cSub).Value))

    WriteDefaults wsNM, nextNM, cols, vals
    wsNM.Cells(nextNM, cNmId).Value = wsSrc.Cells(r, cRin).Value
    wsNM.Cells(nextNM, cNmName).Value = wsSrc.Cells(r, cDesc).Value
    wsNM.Cells(nextNM, cNmDesc).Value = wsSrc.Cells(r, cDesc).Value
    wsNM.Cells(nextNM, cNm1).Value = sGrp & "G"
    wsNM.Cells(nextNM, cNm2).Value = sDept & "D"
    wsNM.Cells(nextNM, cNm3).Value = sDept & "-" & sCls & "C"
    wsNM.Cells(nextNM, cNm4).Value = sDept & "-" & sCls & "-" & sSub & "S"
    nextNM = nextNM + 1
End Sub

Private Sub WriteAttachFee(ByVal r As Long, ByVal feeRin As String, ByVal sEff As String)
    WriteDefaults wsAF, nextAF, afDefCols, afDefVals
    wsAF.Cells(nextAF, cAfSold).Value = wsSrc.Cells(r, cRin).Value
    wsAF.Cells(nextAF, cAfAtt).Value = feeRin
    wsAF.Cells(nextAF, cAfEff).NumberFormat = "@"
    wsAF.Cells(nextAF, cAfEff).Value = sEff
    nextAF = nextAF + 1
    nAF = nAF + 1
End Sub

Private Sub WriteItemProperty(ByVal r As Long, ByVal propCode As String, ByVal amount As Variant)
    WriteDefaults wsGCP, nextGCP, gcpDefCols, gcpDefVals
    wsGCP.Cells(nextGCP, cGcpId).Value = wsSrc.Cells(r, cRin).Value
    wsGCP.Cells(nextGCP, cGcpProp).Value = propCode
    wsGCP.Cells(nextGCP, cGcpType).Value = GCP_TYPE_VALUE
    wsGCP.Cells(nextGCP, cGcpDec).Value = amount
    nextGCP = nextGCP + 1
    nGCP = nGCP + 1
End Sub

Private Sub LogSkip(ByVal r As Long, ByVal problem As String)
    nSkipped = nSkipped + 1
    skipLog = skipLog & "  Row " & r & ": missing/invalid " & Left$(problem, Len(problem) - 2) & vbCrLf
End Sub

'==============================================================================
' MNT file creation
'==============================================================================

' Builds one MNT file per populated TPGC tab in a folder the user picks.
Private Sub CreateMNTFiles(wb As Workbook)
    Dim tabs As Variant, i As Long, ws As Worksheet
    Dim lastRow() As Long, lastCol() As Long, useTab() As Boolean
    Dim msg As String, folder As String, stamp As String
    Dim outPath As String, created As String, nFiles As Long

    On Error GoTo Fail
    tabs = Array(TAB_UPC, TAB_NM, TAB_PRICE, TAB_AF, TAB_GCP)
    ReDim lastRow(LBound(tabs) To UBound(tabs))
    ReDim lastCol(LBound(tabs) To UBound(tabs))
    ReDim useTab(LBound(tabs) To UBound(tabs))

    '--- Find populated tabs and their data extents ---
    For i = LBound(tabs) To UBound(tabs)
        Set ws = GetSheet(wb, CStr(tabs(i)))
        If Not ws Is Nothing Then
            lastRow(i) = LastUsedRow(ws)
            lastCol(i) = LastUsedCol(ws)
            If lastRow(i) >= TGT_FIRST_DATA_ROW And lastCol(i) > 0 Then
                useTab(i) = True
                msg = msg & ws.Name & ": " & (lastRow(i) - 1) & " row(s)" & vbCrLf & _
                      "    Last col " & ColLetter(ws, lastCol(i)) & " """ & _
                      ShortHeader(ws.Cells(TGT_HEADER_ROW, lastCol(i)).Value) & """" & vbCrLf & _
                      "    Last cell: """ & cellText(ws.Cells(lastRow(i), lastCol(i))) & """" & vbCrLf
            End If
        End If
    Next i

    If msg = "" Then
        MsgBox "None of the TPGC tabs have data below the header row.", vbInformation, "Create MNT"
        Exit Sub
    End If

    '--- Sanity check (catches hidden old data, as in Start_MNT) ---
    If MsgBox("Create MNT files for these tabs?" & vbCrLf & vbCrLf & msg & vbCrLf & _
              "If a row count or last column looks wrong, click No. There may be old or " & _
              "hidden data - delete all rows under the last row and columns to the right.", _
              vbYesNo + vbQuestion, "Check the data") = vbNo Then
        MsgBox "MNT creation aborted.", vbInformation, "Create MNT"
        Exit Sub
    End If

    '--- Ask where to save ---
    folder = PickFolder()
    If folder = "" Then
        MsgBox "No folder selected. MNT creation cancelled.", vbInformation, "Create MNT"
        Exit Sub
    End If

    '--- Write files ---
    stamp = Format$(Now(), "yyyy_mm_dd_hhmm")
    For i = LBound(tabs) To UBound(tabs)
        If useTab(i) Then
            Set ws = GetSheet(wb, CStr(tabs(i)))
            outPath = folder & "\MNTCreation_" & ws.Name & "-" & Environ("Username") & stamp & ".mnt"
            WriteMNT ws, lastRow(i), lastCol(i), outPath
            created = created & "  " & Mid$(outPath, InStrRev(outPath, "\") + 1) & vbCrLf
            nFiles = nFiles + 1
        End If
    Next i

    MsgBox "Created " & nFiles & " MNT file(s) in:" & vbCrLf & folder & vbCrLf & vbCrLf & created, _
           vbInformation, "Create MNT"
    Exit Sub

Fail:
    Close
    MsgBox "MNT creation failed:" & vbCrLf & Err.Description, vbCritical, "Create MNT"
End Sub

' Same output as Normal_MNT: rows 2..lastRow, columns 1..lastCol joined by "|",
' followed by one blank line.
Private Sub WriteMNT(ws As Worksheet, ByVal lastRow As Long, ByVal lastCol As Long, ByVal outPath As String)
    Dim f As Integer, r As Long, c As Long, oLine As String
    f = FreeFile
    Open outPath For Output As #f
    For r = TGT_FIRST_DATA_ROW To lastRow
        oLine = ""
        For c = 1 To lastCol
            If c > 1 Then oLine = oLine & "|"
            oLine = oLine & cellText(ws.Cells(r, c))
        Next c
        Print #f, oLine
    Next r
    Print #f, ""
    Close #f
End Sub

' Folder picker; returns "" if cancelled.
Private Function PickFolder() As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Choose where to save the MNT file(s)"
        .AllowMultiSelect = False
        If .Show = -1 Then
            PickFolder = .SelectedItems(1)
            If Right$(PickFolder, 1) = "\" Then PickFolder = Left$(PickFolder, Len(PickFolder) - 1)
        End If
    End With
End Function

' Last row containing anything (including hidden rows).
Private Function LastUsedRow(ws As Worksheet) As Long
    Dim f As Range
    Set f = ws.Cells.Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious)
    If Not f Is Nothing Then LastUsedRow = f.Row
End Function

' Last column containing anything (including the header row and hidden columns).
Private Function LastUsedCol(ws As Worksheet) As Long
    Dim f As Range
    Set f = ws.Cells.Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
                          SearchDirection:=xlPrevious)
    If Not f Is Nothing Then LastUsedCol = f.Column
End Function

' Cell value as text, the same way Normal_MNT concatenates it; errors become "".
Private Function cellText(c As Range) As String
    If IsError(c.Value) Then Exit Function
    cellText = c.Value
End Function

Private Function ColLetter(ws As Worksheet, ByVal col As Long) As String
    ColLetter = Split(ws.Cells(1, col).Address, "$")(1)
End Function

' First line of a header, trimmed to 40 characters for display.
Private Function ShortHeader(ByVal v As Variant) As String
    Dim s As String
    If IsError(v) Then Exit Function
    s = Replace(CStr(v), vbCr, vbLf)
    If InStr(s, vbLf) > 0 Then s = Left$(s, InStr(s, vbLf) - 1)
    s = Trim$(s)
    If Len(s) > 40 Then s = Left$(s, 37) & "..."
    ShortHeader = s
End Function

'==============================================================================
' Helpers
'==============================================================================

' FindHeader that appends the header to 'missing' when not found.
Private Function ReqCol(ws As Worksheet, hdrRow As Long, headerText As String, _
                        matchPrefix As Boolean, ByRef missing As String) As Long
    ReqCol = FindHeader(ws, hdrRow, headerText, matchPrefix)
    If ReqCol = 0 Then missing = missing & "  - " & headerText & vbCrLf
End Function

' Returns the named sheet or raises an error.
Private Function ReqSheet(wb As Workbook, sheetName As String) As Worksheet
    Set ReqSheet = GetSheet(wb, sheetName)
    If ReqSheet Is Nothing Then Err.Raise vbObjectError + 1, , _
        "Tab '" & sheetName & "' not found in target workbook."
End Function

' Parses "Header|Value~Header|Value" and resolves each header to its column.
' Raises an error listing any headers not found on the tab.
Private Sub ResolveDefaults(ws As Worksheet, spec As String, cols() As Long, vals() As String, _
                            matchPrefix As Boolean)
    Dim pairs() As String, parts() As String, i As Long, missing As String
    pairs = Split(spec, "~")
    ReDim cols(LBound(pairs) To UBound(pairs))
    ReDim vals(LBound(pairs) To UBound(pairs))
    For i = LBound(pairs) To UBound(pairs)
        parts = Split(pairs(i), "|")
        cols(i) = FindHeader(ws, TGT_HEADER_ROW, parts(0), matchPrefix)
        vals(i) = parts(1)
        If cols(i) = 0 Then missing = missing & "  - " & parts(0) & vbCrLf
    Next i
    If missing <> "" Then Err.Raise vbObjectError + 3, , _
        "Default-value headers not found on '" & ws.Name & "':" & vbCrLf & missing
End Sub

' Writes the default values into one row.
Private Sub WriteDefaults(ws As Worksheet, rowNum As Long, cols() As Long, vals() As String)
    Dim i As Long
    For i = LBound(cols) To UBound(cols)
        ws.Cells(rowNum, cols(i)).Value = vals(i)
    Next i
End Sub

' Returns the column of a header on the given row, or 0 if not found.
' Comparison ignores case and all whitespace. matchPrefix = True matches headers
' that START with headerText (for long multi-line headers).
Private Function FindHeader(ws As Worksheet, hdrRow As Long, headerText As String, _
                            Optional matchPrefix As Boolean = False) As Long
    Dim lastCol As Long, c As Long, target As String, cellText As String
    target = Tight(headerText)
    lastCol = ws.Cells(hdrRow, ws.Columns.Count).End(xlToLeft).Column
    For c = 1 To lastCol
        cellText = Tight(CStr(ws.Cells(hdrRow, c).Value))
        If matchPrefix Then
            If Left$(cellText, Len(target)) = target Then FindHeader = c: Exit Function
        Else
            If cellText = target Then FindHeader = c: Exit Function
        End If
    Next c
End Function

' Extracts fee RINs from a cell. Ignores anything in parentheses (e.g. the fee
' amount in "14243675 (3.95)") and keeps only all-digit values, so a cell can
' hold one or more RINs separated by commas, semicolons, slashes, spaces or
' line breaks.
Private Function ParseList(ByVal v As Variant) As Collection
    Dim s As String, clean As String, ch As String
    Dim parts() As String, i As Long, depth As Long, tok As String
    Set ParseList = New Collection
    If IsEmpty(v) Then Exit Function
    If IsNumeric(v) Then
        s = Format$(CDec(v), "0")
    Else
        s = CStr(v)
    End If

    ' Drop anything inside parentheses
    For i = 1 To Len(s)
        ch = Mid$(s, i, 1)
        If ch = "(" Then
            depth = depth + 1
        ElseIf ch = ")" Then
            If depth > 0 Then depth = depth - 1
        ElseIf depth = 0 Then
            clean = clean & ch
        End If
    Next i

    clean = Replace(clean, vbCr, " ")
    clean = Replace(clean, vbLf, " ")
    clean = Replace(clean, ",", " ")
    clean = Replace(clean, ";", " ")
    clean = Replace(clean, "/", " ")
    clean = Replace(clean, Chr(160), " ")
    parts = Split(Application.WorksheetFunction.Trim(clean), " ")

    ' Keep digit-only tokens (RINs)
    For i = LBound(parts) To UBound(parts)
        tok = Trim$(parts(i))
        If tok <> "" Then
            If Not tok Like "*[!0-9]*" Then ParseList.Add tok
        End If
    Next i
End Function

' Uppercase, trimmed, internal whitespace/line breaks collapsed to single spaces.
Private Function Norm(ByVal s As String) As String
    s = Replace(s, vbCr, " ")
    s = Replace(s, vbLf, " ")
    s = Replace(s, vbTab, " ")
    s = Replace(s, Chr(160), " ")
    s = Trim$(s)
    Do While InStr(s, "  ") > 0
        s = Replace(s, "  ", " ")
    Loop
    Norm = UCase$(s)
End Function

' Norm with all spaces removed.
Private Function Tight(ByVal s As String) As String
    Tight = Replace(Norm(s), " ", "")
End Function

' Numeric value of a cell ($ and commas allowed); Empty if blank or not numeric.
Private Function NumValue(ByVal v As Variant) As Variant
    Dim s As String
    s = Replace(Replace(Trim$(CStr(v)), "$", ""), ",", "")
    If s = "" Then Exit Function
    If Not IsNumeric(s) Then Exit Function
    NumValue = CDbl(s)
End Function

' Retail as "0.00" text; "" if blank or not numeric.
Private Function RetailText(ByVal v As Variant) As String
    Dim n As Variant
    n = NumValue(v)
    If IsEmpty(n) Then Exit Function
    RetailText = Format$(n, "0.00")
End Function

' Date as "yyyy-mm-dd" text; "" if blank or not a date.
Private Function DateText(ByVal v As Variant) As String
    If IsEmpty(v) Then Exit Function
    If Trim$(CStr(v)) = "" Then Exit Function
    If Not IsDate(v) Then Exit Function
    DateText = Format$(CDate(v), "yyyy-mm-dd")
End Function

' Digits only; normalizes to a 12-digit UPC-A (pads lost leading zeros,
' drops extra leading zeros from GTIN-13/14), then returns the first 11 digits.
Private Function UPCFirst11(ByVal v As Variant) As String
    Dim s As String, d As String, i As Long, ch As String
    If IsNumeric(v) And Not IsEmpty(v) Then
        s = Format$(CDec(v), "0")
    Else
        s = CStr(v)
    End If
    For i = 1 To Len(s)
        ch = Mid$(s, i, 1)
        If ch Like "#" Then d = d & ch
    Next i
    If d = "" Then Exit Function
    Do While Len(d) > 12 And Left$(d, 1) = "0"
        d = Mid$(d, 2)
    Loop
    If Len(d) < 12 Then d = String$(12 - Len(d), "0") & d
    UPCFirst11 = Left$(d, 11)
End Function

' First empty row in the key column at or below TGT_FIRST_DATA_ROW.
Private Function NextEmptyRow(ws As Worksheet, keyCol As Long) As Long
    Dim r As Long
    r = ws.Cells(ws.Rows.Count, keyCol).End(xlUp).Row + 1
    If r < TGT_FIRST_DATA_ROW Then r = TGT_FIRST_DATA_ROW
    NextEmptyRow = r
End Function

Private Function GetSheet(wb As Workbook, sheetName As String) As Worksheet
    On Error Resume Next
    Set GetSheet = wb.Worksheets(sheetName)
    On Error GoTo 0
End Function

Private Function GetOrOpenWorkbook(fullPath As String) As Workbook
    Dim wb As Workbook, fileName As String
    fileName = Mid$(fullPath, InStrRev(fullPath, "\") + 1)
    For Each wb In Application.Workbooks
        If StrComp(wb.Name, fileName, vbTextCompare) = 0 Then
            Set GetOrOpenWorkbook = wb
            Exit Function
        End If
    Next wb
    If Dir(fullPath) = "" Then Exit Function
    On Error Resume Next
    Set GetOrOpenWorkbook = Workbooks.Open(fullPath)
    On Error GoTo 0
End Function

+----------+--------------------+---------------------------------------------+
|Type      |Keyword             |Description                                  |
+----------+--------------------+---------------------------------------------+
|Suspicious|Environ             |May read system environment variables        |
|Suspicious|Open                |May open a file                              |
|Suspicious|Write               |May write to a file (if combined with Open)  |
|Suspicious|output              |May write to a file (if combined with Open)  |
|Suspicious|Print #             |May write to a file (if combined with Open)  |
|Suspicious|run                 |May run an executable file or a system       |
|          |                    |command                                      |
|Suspicious|Create              |May execute file or a system command through |
|          |                    |WMI                                          |
|Suspicious|Chr                 |May attempt to obfuscate specific strings    |
|          |                    |(use option --deobf to deobfuscate)          |
|Suspicious|Hex Strings         |Hex-encoded strings were detected, may be    |
|          |                    |used to obfuscate strings (option --decode to|
|          |                    |see all)                                     |
|Suspicious|Base64 Strings      |Base64-encoded strings were detected, may be |
|          |                    |used to obfuscate strings (option --decode to|
|          |                    |see all)                                     |
|Hex String|'\x00\x02\x08\x19'  |00020819                                     |
|Hex String|'\x00\x00\x00\x00\x0|000000000046                                 |
|          |0F'                 |                                             |
|Hex String|'\x00\x02\x08 '     |00020820                                     |
|Hex String|'\x14$6u'           |14243675                                     |
|Base64    |'\rm'              |Dept                                         |
|String    |                    |                                             |
|Base64    |'Jܕ,'             |Subclass                                     |
|String    |                    |                                             |
|Base64    |O*^                 |Type                                         |
|String    |                    |                                             |
|Base64    |'Rǫ'             |Username                                     |
|String    |                    |                                             |
|Suspicious|VBA Stomping        |VBA Stomping was detected: the VBA source    |
|          |                    |code and P-code are different, this may have |
|          |                    |been used to hide malicious code             |
+----------+--------------------+---------------------------------------------+
VBA Stomping detection is experimental: please report any false positive/negative at https://github.com/decalage2/oletools/issues

ModuleNotFoundError: No module named '_cffi_backend'
thread '<unnamed>' panicked at /usr/share/cargo/registry/pyo3-0.20.2/src/err/mod.rs:788:5:
Python API call failed
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Traceback (most recent call last):
  File "/usr/local/bin/olevba", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/oletools/olevba.py", line 4670, in main
    curr_return_code = process_file(filename, data, container, options)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/oletools/olevba.py", line 4503, in process_file
    if not crypto.is_encrypted(filename):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/oletools/crypto.py", line 195, in is_encrypted
    return msoffcrypto.OfficeFile(file_handle).is_encrypted()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/msoffcrypto/__init__.py", line 47, in OfficeFile
    from msoffcrypto.format.ooxml import OOXMLFile
  File "/usr/local/lib/python3.11/dist-packages/msoffcrypto/format/ooxml.py", line 13, in <module>
    from msoffcrypto.method.ecma376_agile import ECMA376Agile
  File "/usr/local/lib/python3.11/dist-packages/msoffcrypto/method/ecma376_agile.py", line 13, in <module>
    from cryptography.hazmat.primitives import serialization
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/__init__.py", line 7, in <module>
    from cryptography.hazmat.primitives._serialization import (
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/_serialization.py", line 11, in <module>
    from cryptography.hazmat.primitives.hashes import HashAlgorithm
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/hashes.py", line 10, in <module>
    from cryptography.hazmat.bindings._rust import openssl as rust_openssl
pyo3_runtime.PanicException: Python API call failed

Creating the Needed MNT Files

💡
Faster option: the TPGC Cheat Sheet fills these tabs and creates the MNT files for you. The manual steps below are still useful for one-off fixes.

An MNT file is a simple pipe-delimited file used to import specific data into Xadmin's data tables. The data is entered in the MNT Creator Excel workbook, and a built-in macro (Ctrl+Shift+M) converts the active tab into an .mnt file.

  1. Get the latest MNT Creator workbook: download the 2026_01 Master Creator, or email the ORUP team for the current location of the most up-to-date file.
  2. Open the file and do a File → Save As to a location of your choosing. Fill in only the tabs you need converted (see the table above).
  3. A pop-up appears as a reminder of the keystrokes used to convert each tab. Select OK.
  4. Pop-up reminding you to press Ctrl+Shift+M to create the MNT file.
  5. Navigate to the tab(s) needed for the type of TPGC you are building.
  6. Workbook tabs used for TPGC: GCITMProperties, TPGCAttachFee, TPGC_UPC and TPGCNonMerchandise.
  7. Enter the data on the tab, then clear any rows below the last row of entered data.
  8. With that tab active, press Ctrl+Shift+M. The file created is based on the tab that is currently active.
  9. A Check the data prompt shows the last column header, last row count and last cell value. Select Yes after verifying it is correct.
  10. Check the data prompt showing the last column header, last row count and cell value, with Yes and No buttons.
  11. If the converter works, a Done window appears. Select OK.
  12. Microsoft Excel window reading Done with an OK button.
  13. The .mnt file is saved to your U drive. The file name is generated automatically from the tab name, your name, the date and a reference number.
  14. Repeat for each tab the card type needs. Each tab creates its own .mnt file.
⚠
Check the U drive first. If there is a red X on the U drive in File Explorer, the file will not convert. Click the drive to reconnect it, then go back to the workbook and create the MNT file again.

Here is an example of a converted file. Each tab produces a slightly different layout.

Sample .mnt (GCITMProperties)
INSERT|ITEM_PROPERTY|12345|TPGC_MIN_PRICE|Decimal|||5
INSERT|ITEM_PROPERTY|12345|TPGC_MAX_PRICE|Decimal|||500
INSERT|ITEM_PROPERTY|4567|TPGC_MIN_PRICE|Decimal|||5
INSERT|ITEM_PROPERTY|4567|TPGC_MAX_PRICE|Decimal|||500

GCITMProperties Tab

GCITMProperties is used for range value gift cards. Each card needs two rows: one for the minimum value and one for the maximum.

GCITMProperties tab highlighted in the workbook. Example GCITMProperties rows with min and max prices.
ColumnWhat to enter
Column A: Action CodeMust be INSERT (all caps).
Column B: Record IdentifierMust be ITEM_PROPERTY (all caps).
Column C: Item IDEnter the RIN# of the TPGC.
Column D: Property CodeEnter TPGC_MIN_PRICE for the minimum value allowed on a range gift card, or TPGC_MAX_PRICE for the maximum value.
Column E: TypeLeave as DECIMAL.
Column F: String ValueLeave blank.
Column G: Date ValueLeave blank.
Column H: Min/Max Value of GCEnter the minimum dollar value if column D is MIN_PRICE, or the maximum dollar value if column D is MAX_PRICE.

TPGCAttachFee Tab

TPGCAttachFee is used for gift cards with a fee attached. It links the fee item to the card so it is added to the sale automatically.

TPGCAttachFee tab highlighted in the workbook. Example TPGCAttachFee rows with ATTACHED_ITEMS records.
ColumnWhat to enter
Column A: Action CodeMust be INSERT (all caps).
Column B: Record IdentifierMust be ATTACHED_ITEMS (all caps).
Column C: Sold Item IDEnter the RIN# of the sold item (the gift card).
Column D: Attached Item IDEnter the RIN# of the fee item that will be added to the sale automatically. Fee RINs: 14243675 = $3.95, 14243676 = $4.95, 14243677 = $5.95, 14243678 = $6.95.
Column E: Quantity to AddQuantity of the attached item to add to the sale. This is typically 1.
Column F: Effective Date and TimeEnter today's date as 'YYYY-MM-DD, for example '2024-01-25.
Column G: Expiration Date and TimeLeave blank.
Column H: Prompt to Add FlagLeave blank.
Column I: Prompt to Add Message KeyLeave blank.
Column J: (no longer used)Leave blank. The column must still exist.
Column K: Association TypeMust be _commonAttachedItemsPrompt.
Column L: Prompt For Return FlagLeave blank.
Column M: Prompt For Return Msg KeyLeave blank.
Column N: Level CodeEnter * for all levels (worldwide).
Column O: Level ValueEnter * for all levels (worldwide).
💡
Contact the TPGC buyer for the latest list of fee RINs and UPCs.

TPGC_UPC Tab

TPGC_UPC is used to attach a UPC to a gift card.

TPGC_UPC tab highlighted in the workbook. Example TPGC_UPC rows with ITEM_XREF records.
ColumnWhat to enter
Column A: ActionMust be INSERT (all caps). To remove a UPC, use DELETE and enter the UPC to delete in column E. When deleting and adding a new UPC, the DELETE row must come first, with the INSERT row directly below it.
Column B: Table NameMust be ITEM_XREF (all caps).
Column C: TPGC Tran#Enter the transaction RIN# of the TPGC you are attaching the UPC to.
Column DLeave blank.
Column E: Tran GC UPCEnter the UPC for the gift card, using the first 11 digits.
Column F: Store FieldEnter * for worldwide, or STORE for an individual location.
Column G: Store FieldEnter * for worldwide, or the RMS store # for an individual location.
Column H: Apply ImmediatelyLeave as TRUE (all caps).

TPGCNonMerchandise Tab

TPGCNonMerchandise is used to enter all the details of a gift card. This tab has many columns; any column not listed below is left blank.

TPGCNonMerchandise example, columns A through AR. TPGCNonMerchandise example, remaining columns.
ColumnWhat to enter
Column A: ActionEnter INSERT (all caps).
Column B: Record IdentifierEnter NON_PHYSICAL_ITEM (all caps).
Column C: Item IDEnter the transaction RIN# for the gift card.
Column D: Item Level CodeEnter ITEM (all caps).
Column G: Item Type CodeEnter NON_PHYSICAL (all caps).
Column H: NameEnter the name or short description of the item. Do not use special characters.
Column I: DescriptionEnter a text description of the item. Do not use special characters.
Column J: Merch Level 1 IDGroup number the card was built in, followed by G. Example: 226G
Column K: Merch Level 2 IDDepartment number, followed by D. Example: 817D
Column L: Merch Level 3 IDDept#-Class#, followed by C, no spaces. Example: 817-1300C
Column M: Merch Level 4 IDDept#-Class#-Subclass#, followed by S, no spaces. Example: 817-1300-2S
Column U: Unit of MeasureEnter EA (each, all caps).
Column V: Qty ScaleEnter 1.
Column AB: Tax Group IDEnter 0. Do not leave this blank.
Column AE: Attached Items FlagEnter 0 for a no-fee card, or 1 if a fee is attached (Visa cards usually carry a fee).
Column AF: Force Qty of One FlagEnter 1. TPGC cannot use the Qty key because each card has its own activation number.
Column AI: Disallow DiscountsEnter 1.
Column AR: Prompt for PriceEnter 1 for a variable (range) amount card, or 0 for a fixed price card.
Column BD: Non-Physical Item Type CodeFor TPGC enter VOUCHER, exactly as shown in the header (row 1). See Table 1 below.
Column BE: Non-Physical Item Sub-TypeDepends on the type code in column BD. For Third Party Gift Cards use NEX_ISSUE_XPAY_TPGC.
Column BG: Exclude from Net Sales FlagEnter 1.
Column BR: Disallow Deals FlagEnter 1.
Column CE: Org CodeDefault is worldwide, enter *. For a specific location, enter STORE.
Column CF: Level CodeDefault is * for worldwide. For an individual location, enter the store's RMS #.
Column CO: Disallow Self-Checkout FlagEnter 1.

Table 1: Non-Merchandise Type Codes and Corresponding Sub-Type Codes

Type of non-merchType code (BD)Sub-type code (BE)
NEX Gift CardVOUCHERGift Card
TPGCVOUCHERNEX_ISSUE_XPAY_TPGC
Apple CareWARRANTYAPPLECARE
WarrantiesWARRANTY
WARRANTY_GIFT
WARRANTY_RENEWAL
FEE
—LOYALTY_CARDFEE
—AR_PAYMENTPAYMENT
Services, Automotive Labor, Assembly, Delivery, Repairs, RentalFEEFEE
Special Order PaymentSP_ORDER_PAYMENTPAYMENT
Special OrderSP_ORDER_SERVICE_FEEFEE
Special Order DepositSP_ORDER_DEPOSITDEPOSIT
Special OrderSP_ORDER_SHIPPING_FEE
SP_ORDER_RESTOCKING_FEE
RESTOCKING_FEE
FEE
LayawayLAYAWAY_SETUP_FEEFEE
Layaway DepositLAYAWAY_DEPOSITDEPOSIT
Layaway PaymentLAYAWAY_PAYMENTPAYMENT
Layaway Acct CreditLayaway Acct CreditPAYMENT
LayawayLAYAWAY_DELINQUENCY_FEE
LAYAWAY_RESTOCKING_FEE
FEE
Order PaymentOrder PaymentPAYMENT
Order Acct CreditOrder Acct CreditPAYMENT
Special Order Acct CreditSpecial Order Acct CreditPAYMENT
Work OrderWORK_ORDERFEE
Work Order DepositWORK_ORDER_DEPOSITDEPOSIT
Work Order Acct CreditWork Order Acct CreditPAYMENT
—SENDSALE_SHIPPING_FEEFEE
—CREDIT_PAYMENTPAYMENT

ItemPriceAction Tab

ItemPriceAction is used to assign a retail price to a fixed price TPGC.

ItemPriceAction tab highlighted in the workbook. Example ItemPriceAction rows with PRICE_UPDATE_2 records.
ColumnWhat to enter
Column A: ActionEnter INSERT (all caps).
Column B: Table NameEnter PRICE_UPDATE_2 (all caps).
Column C: Transaction RINEnter the transaction RIN#.
Column D: Price TypeEnter REGULAR_PRICE (all caps) for the regular retail price of the gift card.
Column E: Store FieldEnter * to apply the price to all stores, or STORE (all caps) for one location.
Column F: Store #Enter * for all locations (column E must also be *), or the store number for a specific store (column E must be STORE).
Column G: RetailEnter the retail amount of the gift card, including decimals.
Column H: Effective DateEnter the effective date of the retail price as YYYY-MM-DD.
Column I: End DateLeave blank unless entering an end date for a clearance retail. Use YYYY-MM-DD.
Column JEnter 1.
Column KLeave blank.

Create and Upload the Spreadsheet for STS

The STS team needs each new card added to their lookup table so the gift card sales flow through Sales Audit correctly. Fill out the blank STS form with the card's UPC, line object, fees and product name.

Template location: X:\shared\folder\BLANK STS FORM

Sample:

Sample STS form with UPC, line object 404, NEXCOM fee, InComm fee of $2.00 and product name for three Vanilla gift cards.
ℹ
Notes: On the STS form, line object 404 is for financial gift cards and 405 is for non-financial gift cards. The NEXCOM Fee is the gross margin. Unless it has changed, InComm gets $2.00.

Create an Incident Ticket for the STS Team

Open an incident so the STS team adds the new non-merchandise gift cards to their lookup table.

  1. Go to NEX HUB by entering this address in the address bar: internal-link
  2. Select the drop-down arrow under File in the upper left and choose Change Order.
  3. A new window opens. Enter your name in Affected End User.
  4. Select the small + next to Incident Area. In the window that opens, navigate to Applications → Finance → STS 3rd Party Gift Cards.
  5. In Summary Information, type New Gift Cards. In Description, enter the number of new gift cards (or note that it is only a margin change) and state that you will attach the upload spreadsheet.
  6. At the bottom of the window, go to tab 2 and select Attach Documents. Select Choose Files, find your file, highlight it and select Open. Once it loads, select Start Upload, then Close when finished.
  7. At the top of the form, in the Save Incident section, select Save. You will receive an incident number by email.
  8. Done. Close the window.

Submit TPGC RINs and Fee RINs to the ORUP Team

The new RINs are added to the Non-Merchandise Master File, and updates are provided to BTM.

  1. Send an email to the ORUP mailbox listing the TPGC RINs and any fee RINs.
  2. Subject line: New Gift Cards

Deploying the MNT Files into Xadmin

Once every .mnt file for the card is on your U drive, it has to be uploaded and deployed in Xadmin. All files for a card must be deployed on the same day. How you do this depends on whether you have deploy access.

No access to deploy in Xadmin

The Store Systems team will deploy the files for you.

  1. Create an email to the Store Systems team.
  2. Subject: XStore-Deploy Request: Location XX (RMS store #) or World Wide. Be sure to include the location.
  3. In the email, say when you want the MNT deployed. This is usually End of Day, but can be Immediate to fix a critical issue such as UPC or pricing problems holding up sales at the stores.
  4. Attach the .mnt file(s) from your U drive and send.
  5. Notify the Store Systems team in the Teams chat Xstore - Production MNT File Communication. Search for this name at the top of Teams if it is not pinned to your favorites.

Access to deploy in Xadmin

  1. From the Xadmin home page, under Deployment Manager, select File Upload.
  2. Xadmin home page tiles with File Upload under Deployment Manager.
  3. Select the Add File button at the top right.
  4. Select Choose File and pick the .mnt file from your U drive, where it was saved automatically. You can only deploy one file at a time.
  5. Update the File Description. File names can be too long, so you may need to remove a few characters. Click Upload.
  6. Select file to upload dialog with Choose File, File Description and Upload.
  7. The upload status advances to 80%; select OK to move it to 100%.
  8. When the bar reaches 100% you are asked whether to deploy it now. Select Yes.
  9. File uploaded, would you like to deploy it now, with Yes and No buttons.
  10. Two deployment options appear. Select Schedule a Single Deployment.
  11. Schedule a Single Deployment with Organization Node, Target Date and Download Priority fields.
  12. Organization Node: the RMS store number, or *.* for worldwide.
  13. Target Date: the date to deploy, usually today.
  14. Download Priority: use the drop-down to select Immediate or End of Day, then select Next.
  15. At the Apply Immediately? prompt, check the box and select Next.
  16. Apply Immediately checkbox and Next button on the Schedule Deployment page.
  17. On the next window, select the Deploy button in the upper right, then Yes on the confirmation screen.
  18. When it finishes you will see the Deployment was scheduled successfully bar.
  19. Deployment was scheduled successfully progress bar at 100%.

Creating a New Report UDA (ID) & Report UDA Value

DocumentSOP: Report UDA Value (RMS v16)
AuthorData Steward Team
SystemsRMS v16, Excel, SQL/Toad, Outlook

What it is

Report UDAs (User Defined Attributes) are reporting attributes attached to items. Each UDA ID is an attribute, and each UDA Value is one of its options. When a buying team needs a new option, DST adds it as a new value on the existing UDA ID. You do this with the UDA foundation data template: download it from RMS, add the value, upload it back, confirm it processed, and then tell the buyer which ID and value to use on the Item Induction template.

RuleDetail
TemplateTemplate Type Items, Template User Defined Attributes (UDA), under Foundation Data → Data Loading.
Value limitA UDA ID can have at most 999 values.
Value numberUse the next available number after the UDA ID's highest existing value.
DescriptionEnter it in Proper Case.
File formatSave the upload file as .ods (OpenDocument Spreadsheet).
Existing valuesCheck the current UDA listing first: Code M/Code MS/Data Steward Team/ORUP/QRGs on the HUB, or the full UDA list query.

Process at a glance

  1. Download the UDA template from RMS.
  2. Prepare the workbook and add the new value on the UDA_Values tab.
  3. Save as .ods and upload it to RMS.
  4. Confirm it processed, and fix any errors.
  5. Update the QRG and reply to the buyer.

Step 1: Download the UDA Template

  1. In RMS v16 go to Tasks → Foundation Data → Data Loading → Download. RMS Download Data tab with empty Template Type and Template fields.
  2. Set Template Type to Items and Template to User Defined Attributes (UDA). Download Data with Template Type Items and Template User Defined Attributes selected.
  3. Click Download, choose Open with Microsoft Excel, and click OK. Browser dialog to open the User Defined Attributes .ods file with Microsoft Excel.
  4. The workbook opens with five tabs: UDAs, UDA_Translations, UDA_Values, UDA_Value_Translations and UDA_Defaults. Downloaded UDA workbook showing the UDAs tab and the five tabs along the bottom.

Step 2: Prepare the Workbook

  1. On the UDAs and UDA_Defaults tabs, clear all data below the header row (row 1). Leave the headers in place.
  2. Go to the UDA_Values tab and convert UDA (column B) and UDA Value (column C) to numbers.
  3. Sort by UDA (B), then by UDA Value (C).
  4. Add a filter to the header row (row 1).
  5. Filter UDA (B) to the UDA ID you're adding to, and scroll to the bottom of the list to find its highest value.

Step 3: Add the New UDA Value

Add one row per new value, directly below the UDA ID's last value:

ColumnWhat to enter
A: ActionSelect CREATE from the drop-down.
B: UDAThe same UDA ID number as the row above.
C: UDA ValueThe next available number. A UDA ID can have no more than 999 values.
D: UDA Value DescriptionThe requested value, in Proper Case.

Example:

ActionUDAUDA ValueUDA Value Description
Create500051SOP Test Value
UDA_Values tab with a single Create row for UDA 50005, value 1, SOP Test Value.

Step 4: Save and Upload

  1. Save the workbook as an .ods file named Report UDA Updates MM.DD.YY (today's date) in Code M/Code MS/Data Steward/UDA Creation v16.
  2. In RMS v16 go to Tasks → Foundation Data → Data Loading → Upload. RMS Upload Data tab with empty fields.
  3. Fill in the Upload Data tab:
    • Template Type: Items
    • Template: User Defined Attributes (UDA)
    • Process Description: keep the auto-filled description or edit it
    • Source File: click Browse and select the .ods file you saved
    Upload Data filled in with Items, User Defined Attributes and the .ods source file.
  4. Click Upload.

Step 5: Confirm the Upload Processed

  • No notification: the new value was created. Continue to Step 6.
  • A notification appears: the upload had an error. Check the issues and fix them as follows.
  1. Run the process tracker query with your RMS v16 user ID in lowercase. The STATUS column shows PS (processed successfully) or PE (processed with errors).
    SQL: Process tracker
    SELECT to_char(s.action_date, 'DD-Mon-YY HH:MI:SS') a_date, s.process_id, s.process_desc,
           s.status, s.user_id, s.file_path
    FROM rms.svc_process_tracker s
    WHERE user_id = 'yourusernamehere'
    ORDER BY action_date DESC;
    Process tracker query results showing one upload with status PS and one with status PE.
  2. For a PE upload, click the Data Loading Status notification, select the process and click View Issues. Data Loading Status tab with a process selected and the View Issues button.
  3. The Foundation Data Issues tab lists the worksheet, row, column and issue description for each error. Foundation Data Issues showing an error on row 2: Duplicate Brand name exists.
    ℹ
    These example screenshots are from a brand upload; your screens may look slightly different.
  4. Correct the error in the workbook, then save and upload it again (Step 4).

Step 6: Update the QRG and Reply to the Buyer

  1. Run the full UDA list query so the Senior Supply Chain Tech or the DST Manager can add the new value to the Quick Reference Guide (QRG) listing on the SharePoint HUB.
  2. Reply to the buyer's email with the new UDA ID and UDA Value:
    Email reply
    Hi [Buyer Name],
    
    The new Report UDA Value has been processed and created. Please use the following in the UDA ID (starting at column CG) and UDA Value columns on the Item Induction template:
    
    UDA ID: [UDA ID #]
    UDA Value: [UDA Value #] - [Description in Proper Case]
    
    (The description is for reference only and is not entered on the Item Induction template.)

Creating a New Report UDA (ID)

The steps above add a value to an existing UDA ID. A brand-new UDA ID is created on the UDAs tab of the same template. It must be created with at least one UDA Value on the UDA_Values tab, and is then saved and uploaded the same way. For the brand example, see Creating New Brand UDA IDs.

Deleting a UDA (ID) or UDA Value

  1. Download the UDA template the same way as Step 1.
  2. Open the tab you're deleting from: UDAs for a UDA ID, or UDA_Values for a value. The remaining steps are the same on either tab. UDAs tab of the downloaded workbook with Update in the Action column.
    ⚠
    To delete a UDA ID from the UDAs tab, first delete all of its UDA Values.
  3. Add a filter to the header row (row 1).
  4. Find the UDA ID or value to delete, searching by number or name, and set Action (A) to DELETE.
  5. Clear the filter, then filter Action (A) to show only the Update rows (uncheck Delete).
  6. Delete all of the Update rows.
  7. Remove the filter. Only your DELETE rows should remain.
  8. Save as .ods and upload, then confirm it processed (Steps 4 and 5).

Queries

Full list of UDA IDs and values with descriptions. Remove the ---- to filter to one UDA ID:

SQL: Full UDA list
--- Full list of UDAs with descriptions ---
SELECT U1.UDA_ID, U1.UDA_DESC, U2.UDA_VALUE, U2.UDA_VALUE_DESC
FROM rms.uda u1, rms.UDA_VALUES u2
WHERE U1.UDA_ID = U2.UDA_ID
----AND u1.uda_id = 5261
ORDER BY U1.UDA_ID, U2.UDA_VALUE;

Clearance BOPIP UDA Removal

DocumentSOP: Clearance BOPIP UDA Removal (RMS v16)
AuthorData Steward Team
FrequencyWeekly (Wednesday)
SystemsRMS v16, Excel, Outlook

What it is

This process removes the BOPIP (Buy Online, Pick Up In Person) UDA from clearance or restricted items, using an item list and an RMS Mass Change. Removing it stops customers from placing online orders for store pickup on items that are no longer eligible for BOPIP fulfillment.

RuleDetail
RequestThe item list arrives every Wednesday in the email “Clearance BOPIP for UDA Removal”.
Missed weeksItems not processed that week are included again in the following Wednesday's file.
UDA to removeUDA 9627 (BOPIP), UDA Value 1.
Working folderDST drive: Code_M/Code_MS/Data Steward Team/BOPIP
File nameClearance BOPIP for UDA Removal YYYY-MM-DD.ods, using today's date.

Process at a glance

  1. Build the item list template from last week's file.
  2. Upload the item list to RMS.
  3. Delete the BOPIP UDA with a Mass Change.
  4. Reply to the email.

Step 1: Build the Item List Template

  1. Open the BOPIP folder on the DST drive. Copy last week's file, paste it, and rename the copy with today's date. BOPIP folder on the DST drive with a weekly Clearance BOPIP for UDA Removal file for each date.
  2. Replace column C, Item (Parent or Transaction), with the transaction items from this week's email. Make sure there are no duplicate transaction items. Item list template with Item List Family ID, Item List Description and the Item column highlighted.
  3. Update the date in column A (Item List Family ID) and column B (Item List Description) to today's date, and fill both columns down to the last item. Bottom of the item list with the dated Family ID and Description filled down to the last item.
  4. Save and close the file.
💡
To remove duplicates quickly, select column C and use Data → Remove Duplicates before filling down columns A and B.

Step 2: Upload the Item List to RMS

  1. In RMS v16 go to Tasks → Foundation Data → Items → Upload Item List from File and upload the .ods file you just saved. Upload Item List From File tab with the dated Clearance BOPIP .ods file selected as the source file.
  2. Go to Tasks → Foundation Data → Items → Manage Item Lists and search for the file name in Description. Check that Total Items matches the number of items on your file. Item List Search results showing the uploaded Clearance BOPIP item list with its total items.

Step 3: Delete the BOPIP UDA with a Mass Change

  1. Select the item list, then go to Actions → Mass Change → User Defined Attributes. Actions menu open on Mass Change with User Defined Attributes highlighted.
  2. Under List of Values, click Add (the green plus).
  3. Set Action to Delete, then select UDA 9627 (BOPIP) and UDA Value 1. Add, Change, or Delete UDA window with Action Delete, UDA 9627 BOPIP and UDA Value 1.
    ℹ
    The UDA and UDA Value drop-downs can take a long time to load. Wait for each one to finish before moving on.
  4. Click OK, then Save and Close.

Step 4: Reply to the Email

Reply to the “Clearance BOPIP for UDA Removal” email to confirm the work is done:

Email reply
BOPIP UDA has been removed from items provided.