🫪 Shenanigans and breaking things with the Client object in the new ACM product

Been breaking things left and right in the rollout of the asana-client-management product. Current shenanigans involve seeing what ways we can work with the Client custom_type.portfolio object.

The Client and Contact custom_type objects feel a little undercooked. See below.

We have this nice little Client record custom field in the product now. We can set this field from the Contacts view. Which is great. So I got to check out its settings and notice we don’t get an “Edit field” option like we do other custom fields…

So, I think to myself, “That’s alright. I’ll go add a new custom field to this object to see if I can learn more about it there.” And I find it! Except it’s called “Client record” in this area.

I figure this is it because it says it’s already added to the portfolio, but no other such field exists on this object like that. At least not that’s visible to me.

So, I go and add this custom field to a project where I can edit it. After looking, it appears to be a sort of custom_type portfolio, set to only show records from a particular table. In this case, the Clients table.

Unfortunately, we’re unable to edit this field because it is used in a template…and that template is not accessible to use in our workspace anywhere because this field was “Created by Asana.” :pensive_face:

So, I think to myself, "No problem! I’ll just make my own version of this field. :smiley:

Alas, the option to select Records as the Source and set Reference list filters to Record is in table = Clients is not something we can do yet in the product. :pensive_face:

So, I think to myself, “No problem! I’ll just make a COPY of this field and use that!” :smiley:

So, I do just that. Great! Now I have my own version of this field that I can add to projects so I can associate tasks with a Client record! Right? :innocent:

No…unfortunately it doesn’t quite work that way. I can add it to projects just fine. But, when I click the dropdown to select a Client object, it says “No matches found.” Even when I begin to type in something. :pensive_face:

So, I think to myself. Well, let me try the one Asana made. You know, the one that works just fine in the Contacts view so we can link a Contact to a Client. :smiley:

So I have that one added to a Project, but it also says, “No matches found.” :pensive_face:

Which is odd. You know, because it works just fine in the Contacts view. *Note, that in the Contacts view this record is displayed as Client instead of Client record. :thinking:

So, I go to investigate it via the API. My first thought: **Use the Get all custom types associated with an object endpoint by setting the object to my workspace ID. :smiley:

Alas, it returns an error…:pensive_face:

{
  "errors": [
    {
      "message": "Oops! An unexpected error occurred while processing this request. The input may have contained something the server did not know how to handle. Usually waiting and then retrying the request once fixes this. If the issue is persistent, please navigate to https://help.asana.com and engage with our chatbot, making sure to include the error phrase from this response.",
      "phrase": "26 dizzy otters behave fairly well"
    }
  ]
}

So, I think to myself, “Well…what happens if I add a Reference custom field to my project?” :smiley:

And what do I see?! The elusive Client records! So I’m positive this is a portfolio of some sort now, so I go to the API and use the Get project portfolio settings for a portfolio endpoint. And finally get some data back on it. So, now we know both the portfolio and the project I created are custom_types. Interesting…:thinking:

So, I realize that must be what this little Connect to Client button does…

After testing, I realize I cannot connect a project to more than one client using this method. So, I figure, “Why not make a Rule do it for me?”

Surely if this isn’t supposed to work they’ve thought of this and will prevent it, right? :innocent:

Nope. The project now exists in both Client objects. :rofl:

Confirmed via the API as well.

{
  "data": [
    {
      "gid": "1219009357222242",
      "resource_type": "project_portfolio_setting",
      "project": {
        "gid": "1218899494595301",
        "resource_subtype": "custom",
        "name": "Field Importer",
        "resource_type": "project"
      },
      "portfolio": {
        "gid": "1218890611977396",
        "resource_subtype": "default_portfolio",
        "name": "Roadmap",
        "resource_type": "portfolio"
      },
      "is_access_control_inherited": false
    },
    {
      "gid": "1219009679068806",
      "resource_type": "project_portfolio_setting",
      "project": {
        "gid": "1218899494595301",
        "resource_subtype": "custom",
        "name": "Field Importer",
        "resource_type": "project"
      },
      "portfolio": {
        "gid": "1218886033809410",
        "resource_subtype": "custom",
        "name": "CLIENT_A",
        "resource_type": "portfolio"
      },
      "is_access_control_inherited": false
    },
    {
      "gid": "1219009679068812",
      "resource_type": "project_portfolio_setting",
      "project": {
        "gid": "1218899494595301",
        "resource_subtype": "custom",
        "name": "Field Importer",
        "resource_type": "project"
      },
      "portfolio": {
        "gid": "1218885782622030",
        "resource_subtype": "custom",
        "name": "Client projects",
        "resource_type": "portfolio"
      },
      "is_access_control_inherited": false
    },
    {
      "gid": "1219009679068821",
      "resource_type": "project_portfolio_setting",
      "project": {
        "gid": "1218899494595301",
        "resource_subtype": "custom",
        "name": "Field Importer",
        "resource_type": "project"
      },
      "portfolio": {
        "gid": "1218903254027863",
        "resource_subtype": "custom",
        "name": "CLIENT_B",
        "resource_type": "portfolio"
      },
      "is_access_control_inherited": false
    }
  ]
}

Takeaway: This product may have been released too early. I’ve been able to break a little over 2 dozen things thus far. Not to mention I somehow have like 5–6 versions of a “Created on” lookup type field in my project now that I can’t delete via the UI nor even make appear in the UI anymore. It’s been wild…

Hey Skyler, thanks for putting this together. This is exactly the kind of stress-testing that makes user feedback so valuable. Appreciate you going this deep.

A few updates from the product team: some of what you found is already fixed, including adding the Asana-created Client field to a Project. One thing worth knowing: if you create a Project directly from the Client record, it associates automatically, which may be cleaner than the field approach depending on your workflow.

The ability to associate a project to multiple Clients via Rules and the API is something the team is aware of and working on. Lucy from the product team will follow up with you directly to learn more about your setup.

2026-10-01 Update. As of 2026-10-01 the Asana Client record hasn’t changed since the tests I ran on it. I’ll check back in a few days to see if the release hasn’t made it to production yet.


Thanks for the update @Nupur_Bhade_Vilas.

I knew creating the project from the client field would associate it with the Client automatically. I was just going through all the various ways of doing things I could to see where I could break it.

Good to hear the Client record field has been fixed. I’ll test it shortly to see if I can associate the task with the Client record.