Copying Directly Assigned 3D Resources from one Task to a second Task

I have a schedule imported from MS Project which is due to be replaced soon by one created and imported from P6. I'd like to be able to select two Tasks (one from the MS project schedule, and the second from the P6 schedule) and have the Directly assigned 3D Resources (assignment, appearance profile & 3D Path applied) copied across. I assume that this could be handled by a script but I'm only familiar with very basic scripting based on single task operations and I don't know where to start.

This would seem to be the most reliable way to semi-automatically handle the assignment transfer between tasks but I'm open to any suggestions on how to handle this?

I am currently on version 6.3.1.2 but looking to upgrade to a later version very soon.

Thanks in advance!

  • Hi Jim, 

    Please go through the following steps - 

    1. Run the following Scripts to copy Task IDs and Appearance Profiles of existing Resource Assignments as User Fields - 

      RESOURCE ASSIGN_UF("Old Task IDs", STRING, CONCAT_COMMA(TASK.USER_ID))
      RESOURCE ASSIGN_UF("Appearance Profile", STRING, ASSIGNMENT.STRING_PROPERTY("Appearance Profile"))



    2. Run the following Scripts to extract 3D Path properties - 
      RESOURCE ASSIGN_UF("3D Path", STRING, ASSIGNMENT.STRING_PROPERTY("3D Path"))
      RESOURCE ASSIGN_UF("Alignment", STRING, ASSIGNMENT.STRING_PROPERTY("Alignment"))
      RESOURCE ASSIGN_UF("X", STRING, ASSIGNMENT.STRING_PROPERTY("X"))
      RESOURCE ASSIGN_UF("Y", STRING, ASSIGNMENT.STRING_PROPERTY("Y"))
      RESOURCE ASSIGN_UF("Z", STRING, ASSIGNMENT.STRING_PROPERTY("Z"))
    3. Import the new schedule and identify properties that are common between both schedules. Eg, Activity IDs are the same.

    4. Use Resource to Task Auto Matching to assign the existing Resources to the new schedule Tasks. Here is an example setup using Activity IDs as the common property and Install profile - 


      You can review this video to learn more about Auto Matching.

      The above is possible to do through Scripts as well, but Auto Matching is much more efficient with the processing time.
    5. Edit the following scripts to change Appearance Profiles in bulk -

      TASK.ASSIGNMENT(RESOURCE.UFV("Appearance Profile")=="Pour Concrete") SET_PROPERTY (PROPERTY("Appearance Profile"), ALL_USE_PROFILE( NAME == "Pour Concrete"))

      TASK.ASSIGNMENT(RESOURCE.UFV("Appearance Profile")=="Install Steel") SET_PROPERTY (PROPERTY("Appearance Profile"), ALL_USE_PROFILE( NAME == "Install Steel"))


    6. Run the following scripts to assign the corresponding 3D Paths - 

      TASK.ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("3D Path"), RESOURCE.UFV("3D Path"))
      TASK.ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("Alignment"), RESOURCE.UFV("Alignment"))
      TASK.ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("X"), RESOURCE.UFV("X"))
      TASK.ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("Y"), RESOURCE.UFV("Y"))
      TASK.ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("Z"), RESOURCE.UFV("Z"))

    Hope this helps!

  • Thanks Arpit,
    This has given me many ideas on how to potentially carry this out.
    I replaced the OldTaskID resource value with the common new/old task values else the automatching doesn't work.

    Is there any way to populate the Resource userfields (appearance profile, 3dpath etc) with the information held from the assignments of a single selected task? The method you have supplied pulls all the assignment data for every task it is assigned to which makes reassigning the correct appearance profiles tricky.

    Many thanks for the help on this Arpit

  • Jim, 

    You can add SELECTED in from of TASK, which will then ensure the script is only working for selected Tasks. Eg. 

    TASK(SELECTED).ASSIGNMENT SET_PROPERTY (STRING_PROPERTY("3D Path"), RESOURCE.UFV("3D Path"))

    Typically, just doing multiple Resource Assignments using the provided method above works like a charm, but including Appearance Profile and 3D path starts getting trickier. But you have means of referencing that information at least and using some quick tabular filters, edits can be made in bulk.

  • Arpit,
    Thanks for replying. You've provided a script to set the properties of the selected task assignments, I was looking for the reverse.

    The reason I am so hung up on doing this a Task at a time is because many of my Resources are assigned multiple times across the schedule using differing Appearance Profiles, I can pull multiple Appearance Profiles for a Resource but assigning the correct Profile for the correct Task I think may be impossible unless I can cross-reference them in a numbered array (well beyond my capabilities!).

    These are the steps as I see it:
    1) Select the old Task & Select all the Resources currently assigned to it (manual operation)
    2) Script sets Resource UFV's applicable only to the currently selected Task (this is the script I'm after)
    3) Assign the Resources to the new Task in bulk using standard shortcut (manual operation)
    4) Script to assign correct Appearance Profiles, 3DPath & Alignment (already have these scripts)

    Thanks Arpit

  • Hope this is what you looking for - 

    RESOURCE(SELECTED) ASSIGN_UF("Old Task IDs", STRING, CONCAT_COMMA(TASK(SELECTED).USER_ID))

    RESOURCE(SELECTED) ASSIGN_UF("Appearance Profile", STRING, TASK(SELECTED).ASSIGNMENT.STRING_PROPERTY("Appearance Profile"))