Family Parameters Reorder

Hi EveryOne, I am working to create parameters and set values to the familydocs data from excel, but when i do so the order is automatically getting sorted from a to z eventhough i am adding the parameter in my desired order and then i tried adding reorder parameters code as well eventhen it is coming in that way. i have attached the code, can anyone tell me where i am going wrong??

Thanks in Advance

import clr

import sys

import System
from System.Collections.Generic import *

clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager 
from RevitServices.Transactions import TransactionManager 

clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")

import Autodesk 
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication 
app = uiapp.Application 
uidoc = uiapp.ActiveUIDocument

def tolist(obj1):
	if hasattr(obj1,"__iter__"): return obj1
	else: return [obj1]

def reorder_list(list1, list2):
    # Create a dictionary for the order of elements in list2
    order_dict = {item: idx for idx, item in enumerate(list2)}
    
    # Separate elements in list1 that are in list2 and those that are not
    in_list2 = [item for item in list1 if item in list2]
    not_in_list2 = [item for item in list1 if item not in list2]
    
    # Sort the elements in list1 that are in list2 according to the order in list2
    sorted_in_list2 = sorted(in_list2, key=lambda x: order_dict[x])
    
    # Combine the sorted elements with the ones not in list2
    return sorted_in_list2 + not_in_list2


#Close all transactions

trans = TransactionManager.Instance

trans.ForceCloseTransaction()


fams = UnwrapElement(IN[0])
paths = IN[1]
pNameLst = UnwrapElement(IN[2])
pValues = IN[3]
pNames = IN[4]


#unwrap the Dynamo elements

output=[]
test=[]
for i in range(len(fams)):
    pmngs,pmdgs,pmds,pmdd = [],[],[],[]
    famDoc = doc.EditFamily(fams[i])
    fm = famDoc.FamilyManager
    trs=Transaction(famDoc, 'create parameter')
    trs.Start()
    for j, value in zip(pNameLst[i], pValues[i]):
        try:
            fm.AddParameter(j, SpecTypeId.String.Text, False)
            fm.Set(fm.get_Parameter(j), str(value))
            output.append('Parameter was successfully created')
        except:
            output.append('Operation Failed')
    
    pms=fm.GetParameters()
    pmngs=[p.Definition.Name for p in pms]
    
    reorderedpmngs = reorder_list(pmngs,pNames)
    for repgs in reorderedpmngs:
        for pmn,pmd in zip(pmngs,pms):
            if repgs==pmn:
                pmdd.append(pmd)
                break
    fm.ReorderParameters(pmdd)
    trs.Commit()
    famDoc.SaveAs(paths[i])
    famDoc.Close(False)


OUT =output

try to add

famDoc.Regenerate()
before
pms=fm.GetParameters()

if it still doesn’t work, you may need to add a transaction