Files field broken on Custom Integrations

After the most recent update it appears that there are some issues with Files fields for Custom Integrations. I have Files fields enabled for two different Types. The fields are visible in the type fields menu, the type table/grid view, and as a toggle in the entity view. However when toggled in the entity view the field flashes on screen momentarily and then disappears. I also no longer receive requests to the /api/v1/synchronizer/webhooks endpoint which had been working properly for me. Here is the schema of one of the types, an example update map from a synchronization, and a console.log of the entity in Fibery.

Schema

"Purchase": {
            "Attachables": {
                "readonly": false,
                "ignore": false,
                "name": "Attachments",
                "type": "array[text]",
                "id": "Attachables",
                "key": "Attachables",
                "originalName": "Attachments",
                "subType": "file"
            },
            "Credit": {
                "readonly": false,
                "ignore": false,
                "name": "Credit",
                "type": "text",
                "id": "Credit",
                "key": "Credit",
                "originalName": "Credit",
                "subType": "boolean"
            },
            "CustomerId": {
                "readonly": false,
                "ignore": false,
                "name": "Customer ID",
                "type": "text",
                "id": "CustomerId",
                "key": "CustomerId",
                "originalName": "Customer ID",
                "relation": {
                    "cardinality": "many-to-one",
                    "name": "Customer Payee",
                    "targetName": "Expenses",
                    "targetType": "Customer",
                    "targetFieldId": "id"
                }
            },
            "DocNumber": {
                "readonly": false,
                "ignore": false,
                "name": "Reference Number",
                "type": "text",
                "id": "DocNumber",
                "key": "DocNumber",
                "originalName": "Reference Number"
            },
            "EmployeeId": {
                "readonly": false,
                "ignore": false,
                "name": "Employee ID",
                "type": "text",
                "id": "EmployeeId",
                "key": "EmployeeId",
                "originalName": "Employee ID",
                "relation": {
                    "cardinality": "many-to-one",
                    "name": "Employee Payee",
                    "targetName": "Expenses",
                    "targetType": "Employee",
                    "targetFieldId": "id"
                }
            },
            "Name": {
                "readonly": false,
                "ignore": false,
                "name": "Name",
                "type": "text",
                "id": "Name",
                "key": "Name",
                "originalName": "Name",
                "subType": "title"
            },
            "PaymentAccountId": {
                "readonly": false,
                "ignore": false,
                "name": "Payment Account ID",
                "type": "text",
                "id": "PaymentAccountId",
                "key": "PaymentAccountId",
                "originalName": "Payment Account ID",
                "relation": {
                    "cardinality": "many-to-one",
                    "name": "Payment Account",
                    "targetName": "Expenses",
                    "targetType": "Account",
                    "targetFieldId": "id"
                }
            },
            "PaymentMethodId": {
                "readonly": false,
                "ignore": false,
                "name": "Payment Method ID",
                "type": "text",
                "id": "PaymentMethodId",
                "key": "PaymentMethodId",
                "originalName": "Payment Method ID",
                "relation": {
                    "cardinality": "many-to-one",
                    "name": "Payment Method",
                    "targetName": "Expenses",
                    "targetType": "PaymentMethod",
                    "targetFieldId": "id"
                }
            },
            "PaymentType": {
                "readonly": true,
                "ignore": false,
                "name": "Payment Type",
                "type": "text",
                "id": "PaymentType",
                "key": "PaymentType",
                "originalName": "Payment Type",
                "subType": "single-select",
                "options": [
                    {
                        "name": "Cash"
                    },
                    {
                        "name": "Check"
                    },
                    {
                        "name": "Credit Card"
                    }
                ]
            },
            "PrivateNote": {
                "readonly": false,
                "ignore": false,
                "name": "Memo",
                "type": "text",
                "id": "PrivateNote",
                "key": "PrivateNote",
                "originalName": "Memo",
                "subType": "md"
            },
            "QBOId": {
                "readonly": false,
                "ignore": false,
                "name": "QBO ID",
                "type": "text",
                "id": "QBOId",
                "key": "QBOId",
                "originalName": "QBO ID"
            },
            "SyncToken": {
                "readonly": true,
                "ignore": false,
                "name": "Sync Token",
                "type": "text",
                "id": "SyncToken",
                "key": "SyncToken",
                "originalName": "Sync Token"
            },
            "Total": {
                "readonly": false,
                "ignore": false,
                "name": "Total",
                "type": "number",
                "id": "Total",
                "key": "Total",
                "originalName": "Total",
                "format": {
                    "currencyCode": "USD",
                    "format": "Money",
                    "hasThousandSeperator": true,
                    "precision": 2
                }
            },
            "TxnDate": {
                "readonly": false,
                "ignore": false,
                "name": "Date",
                "type": "date",
                "id": "TxnDate",
                "key": "TxnDate",
                "originalName": "Date",
                "subType": "day"
            },
            "VendorId": {
                "readonly": false,
                "ignore": false,
                "name": "Vendor ID",
                "type": "text",
                "id": "VendorId",
                "key": "VendorId",
                "originalName": "Vendor ID",
                "relation": {
                    "cardinality": "many-to-one",
                    "name": "Vendor Payee",
                    "targetName": "Expenses",
                    "targetType": "Vendor",
                    "targetFieldId": "id"
                }
            },
            "__syncAction": {
                "readonly": false,
                "ignore": false,
                "name": "Sync Action",
                "type": "text",
                "id": "__syncAction",
                "key": "__syncAction",
                "originalName": "Sync Action"
            },
            "id": {
                "readonly": false,
                "ignore": false,
                "name": "id",
                "type": "id",
                "id": "id",
                "key": "id",
                "originalName": "id"
            }
        }

Update

"Attachments": ["app://resource?type=attachable&id=1105529"],
"Credit": false,
"DocNumber": "",
"EntityId": "v:57", 
"Name": "Squeaky Kleen Car Wash - test2",
"PaymentAccountId": "35",
"PaymentMethodId": "",
"PaymentType": "Cash",
"PrivateNote": "test2",
"QBOId": "145",
"SyncToken": "15",
"Total": 395.00,
"TxnDate": "2025-04-15T00:00:00Z",
"__syncToken": "SET",
"id": "145",

Console Log

{
  'Vendor Payee': { Name: null, Id: null },
  'Created By': { Name: null, Id: null },
  'Payment Account ID': '35',
  'Public Id': '36',
  'Customer ID': null,
  Id: '4555f582-6cde-47ce-a66d-5749d65f42f5',
  'Reference Number': null,
  'Creation Date': '2025-05-10T16:00:17.316Z',
  Memo: {
    Id: '56239c65-829b-4e60-941f-09fc5d8840c3',
    Secret: 'f52123b0-29ab-4f2d-94a9-84dcf76c507d'
  },
  'Deleted in QuickBooks Online': 'no',
  'Sync Token': '15',
  'Sync Id': '145',
  'Employee ID': null,
  'Modification Date': '2025-05-10T16:00:34.760Z',
  Total: '395',
  'Payment Account': { Name: 'Checking', Id: '2184ca45-6f1c-46f2-98b3-fddf5ff8943b' },
  Date: '2025-04-15',
  'Payment Method ID': null,
  'QBO ID': '145',
  Rank: 3085473134726321,
  'Vendor ID': null,
  Name: 'Squeaky Kleen Car Wash - test2',
  'Payment Type': { Id: '1f837437-aa31-4ba6-b4a1-fce3686174ef', Name: 'Cash' },
  'Customer Payee': { Id: null, Name: null },
  'Payment Method': { Name: null, Id: null },
  Credit: false,
  'Employee Payee': { Id: null, Name: null },
  Type: 'QuickBooks/Expense'
}

I also no longer receive requests to the /api/v1/synchronizer/webhooks endpoint which had been working properly for me

First part of message about files, just want to double check whether it’s not a mistake that you mentioned webhook endpoint here.

Yes that is a mistake, my apologies, I no longer receive requests to /api/v1/synchronizer/resource

We do not send requests for already uploaded files. Just to make sure

  • do you have new files?
  • could you share your custom integration id so I can inspect?

Ok, just tested a few more things and I think I can clarify some things. My integration id is 681f87617fbaf8d379fcde62. I just added a new file to an entity in QuickBooks, received a request to /api/v1/synchronizer/resource, and can now see the file on the entity. So that is working as expected. However I still have 2 other entities that have files in QuickBooks and that files are not appearing in Fibery. These entities and files have previously been synced with Fibery properly, but since I have been testing, I have deleted my integration data and re-added a few times. I wonder if the files are still in my workspace and not linked to an entity, but for some reason they are not attaching to these entities when I re-sync. The unlinked file URLs should be the following: app://resource?type=attachable&id=1105529, app://resource?type=attachable&id=1097618, app://resource?type=attachable&id=1099990

I’m just trying to understand your steps:

  1. synced data with files
  2. deleted data from Fibery
  3. synced again

Result: entities appear without files. Am I right?

Yes, exactly.

Will try to reproduce because was not able to do this “on-fly”.

So, I can propose you, as a workaround, to try to execute “Force Full Sync”.

I understand, thank you for looking into this! I frequently do a “Force Full Sync” when restarting my app because I have a mem cache that needs to be populated, but I just did one again. Here is the response for the two “Purchase” entities in question:

{
            "Attachments": [
                "app://resource?type=attachable&id=1105529"
            ],
            "Credit": false,
            "CustomerId": "",
            "DocNumber": "",
            "EmployeeId": "",
            "EntityId": "v:57",
            "Name": "Squeaky Kleen Car Wash - test3",
            "PaymentAccountId": "35",
            "PaymentMethodId": "",
            "PaymentType": "Cash",
            "PrivateNote": "test3",
            "QBOId": "145",
            "SyncToken": "20",
            "Total": 395,
            "TxnDate": "2025-04-15T00:00:00Z",
            "VendorId": "57",
            "__syncAction": "SET",
            "id": "145"
        },
        {
            "Attachments": [
                "app://resource?type=attachable&id=1097618",
                "app://resource?type=attachable&id=1099990"
            ],
            "Credit": false,
            "CustomerId": "",
            "DocNumber": "",
            "EmployeeId": "55",
            "EntityId": "e:55",
            "Name": "Emily Platt - test",
            "PaymentAccountId": "35",
            "PaymentMethodId": "",
            "PaymentType": "Cash",
            "PrivateNote": "test",
            "QBOId": "155",
            "SyncToken": "6",
            "Total": 1500,
            "TxnDate": "2025-05-03T00:00:00Z",
            "VendorId": "",
            "__syncAction": "SET",
            "id": "155"
        },

@Evgeni_Kisel I just did one more Force Full Sync and it seemed to work. Did you manually clear out the unlinked documents?

Edit
I just tried deleting and re-adding the integration data as a test and I now see all the files. Hopefully this wasn’t just some dumb error by me but either way, thank you @Evgeni_Kisel !!!

1 Like

No, I did nothing.

But I will try to reproduce your issue in any case. And I’m glad that it works for you right now :tada:

Edit: just tested several hypothesis but everything works fine on our end.

1 Like