# ✅ **How to Clone the Sales Transaction Entry Window in Dexterity**
This is the cleanest, safest workflow used by GP ISVs and internal dev teams.
---
# 🧱 **1. Open Dexterity and Load the GP Dictionaries**
You need access to:
- `Dynamics.dic` (core dictionary)
- Any third‑party dictionaries you rely on
Open Dexterity → **File → Open** → select the dictionary.
---
# 🧱 **2. Locate the SOP Entry Form**
In the Resource Explorer:
```
Forms → SOP_Entry
```
Inside you’ll see:
- Windows (SOP_Entry)
- Triggers
- Scripts
- Fields
- Menus
- Local resources
This is the form GP treats as a **singleton**.
---
# 🧱 **3. Duplicate the Form (the critical step)**
Right‑click the form → **Duplicate**.
Rename it something like:
```
SOP_Entry2
```
Dexterity will automatically:
- Create a new Form ID
- Create new Window IDs
- Copy all fields, scripts, and layout
This is the key: **a new Form ID means GP treats it as a separate window**, so it can run alongside the original.
---
# 🧱 **4. Update Internal References**
Inside the cloned form, update:
### ✅ Window name
Rename the window to something like:
```
SOP_Entry2
```
### ✅ Form‑level scripts
Search for references to `SOP_Entry` inside scripts.
Replace with `SOP_Entry2` where appropriate.
### ✅ Global references
If the original form uses global procedures or functions, you can leave them — but any form‑specific calls must be updated.
---
# 🧱 **5. Adjust Any Custom Logic**
This is where you make it “slightly different”:
Examples:
- Hide fields
- Add new fields
- Change default values
- Add new triggers
- Add new scrolling window columns
Because this is a **new form**, you can customise it without affecting the original.
---
# 🧱 **6. Add the New Form to the Menu**
You must expose the new window to users.
In Dexterity:
- Go to **Menus**
- Add a new menu item under:
```
Sales → Transactions
```
- Point it to the new form:
```
Form: SOP_Entry2
Window: SOP_Entry2
```
---
# 🧱 **7. Compile to a New Dictionary**
You do **not** overwrite Dynamics.dic.
Instead:
- Create a new dictionary, e.g. `CustomSOP.dic`
- Add it to GP’s launch file (`Dynamics.set`) so GP loads it after the core dictionary
This keeps your clone upgrade‑safe.
---
# 🧱 **8. Assign Security**
In GP:
- Go to **Security Tasks**
- Add access to the new form (it will appear under the dictionary name you created)
Users will now see **two separate SOP Entry windows**.
---
# ✅ **Result**
You now have:
### **Original**
```
Form: SOP_Entry
Window: SOP_Entry
```
### **Clone**
```
Form: SOP_Entry2
Window: SOP_Entry2
```
GP sees them as **completely different windows**, so you can open both at the same time in one session.
---

Report
All responses (
Answers (