|
2534
|
107
|
1
|
2026-05-07T11:24:54.982273+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153094982_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ah]• Support Daily • in 36 m100% [Thu 7 May 14:24:54DEV (docker)83DOCKERLast login: Thu MayO ₴1DEV (docker)7 09:44:56 on ttys006H82APP (-zsh)-zsh• 84screenpipe*•$5-zsh₴6Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20773-fix-automated-reports-user-pilot-tracking) $ devroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --from='2026-05-01 00:00:00*Syncing opportunity for HubspotYour HubSpotaccount has become disconnected. Please login to Jiminny to reconnect. skipping...root@docker_lamp_1:/home/jiminny# php artisan jiminny:token-info -A 1499 -RDEVaccess_tokenCFPAsBNZxoDp5kAcRyeB1QoE5SM7DSgNuYTFSAFoAYABo3tj9DHAAeAACNeR-JHgMxIZQLNQMl8kQEwrAgwACAkUAhIJBB4BAQEDBxiCiYwCIN7Y_Qwo0qwCMhTnG549n-YtNuc1jgj-2AsLPSmw3DoyQLNQM18kQEwrAiUACBkGawEFThwBARIBAQEEATEEAQEBAQEBAQEBAQUBEggBAQEBAY1access_token_expires_at= 2026-05-07 11:41:20refresh_token => d5ab04e2-2109-4c0b-b513-8cba1dd54371refresh_token_expires_at =root@docker_lamp_1:/home/jiminny#...
|
NULL
|
6722486411332325199
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ah]• Support Daily • in 36 m100% [Thu 7 May 14:24:54DEV (docker)83DOCKERLast login: Thu MayO ₴1DEV (docker)7 09:44:56 on ttys006H82APP (-zsh)-zsh• 84screenpipe*•$5-zsh₴6Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20773-fix-automated-reports-user-pilot-tracking) $ devroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --from='2026-05-01 00:00:00*Syncing opportunity for HubspotYour HubSpotaccount has become disconnected. Please login to Jiminny to reconnect. skipping...root@docker_lamp_1:/home/jiminny# php artisan jiminny:token-info -A 1499 -RDEVaccess_tokenCFPAsBNZxoDp5kAcRyeB1QoE5SM7DSgNuYTFSAFoAYABo3tj9DHAAeAACNeR-JHgMxIZQLNQMl8kQEwrAgwACAkUAhIJBB4BAQEDBxiCiYwCIN7Y_Qwo0qwCMhTnG549n-YtNuc1jgj-2AsLPSmw3DoyQLNQM18kQEwrAiUACBkGawEFThwBARIBAQEEATEEAQEBAQEBAQEBAQUBEggBAQEBAY1access_token_expires_at= 2026-05-07 11:41:20refresh_token => d5ab04e2-2109-4c0b-b513-8cba1dd54371refresh_token_expires_at =root@docker_lamp_1:/home/jiminny#...
|
2532
|
NULL
|
NULL
|
NULL
|
|
2580
|
109
|
1
|
2026-05-07T11:29:44.622639+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153384622_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"}]...
|
7146116803105359797
|
-6913325059417482156
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2...
|
2579
|
NULL
|
NULL
|
NULL
|
|
2581
|
110
|
1
|
2026-05-07T11:29:44.707245+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153384707_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"bounds":{"left":0.47340426,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"bounds":{"left":0.48537233,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Tell caller how long to sleep until oldest entry expires","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZRANGE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'WITHSCORES'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'BURST'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"}]...
|
7624138509500572550
|
-6913395462521398188
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2659
|
111
|
1
|
2026-05-07T11:34:25.749758+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153665749_m1.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
6
1
6
Previous Highlighted Error
Next Highlighted Error
# [PASSWORD_DOTS] HS [PASSWORD_DOTS]
select * from teams where id = 2; # 2
select * from features; # 2
select * from team_features where team_id = 2; # 2
select * from crm_configurations where id = 2; # 2
select * from users where team_id = 2; #
select * from playbooks where team_id = 2; # event 38
select * from playbook_categories where playbook_id = 38; #
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;
[URL_WITH_CREDENTIALS] CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"# **************************** HS **************************************\n\nselect * from teams where id = 2; # 2\nselect * from features; # 2\nselect * from team_features where team_id = 2; # 2\nselect * from crm_configurations where id = 2; # 2\nselect * from users where team_id = 2; #\nselect * from playbooks where team_id = 2; # event 38\nselect * from playbook_categories where playbook_id = 38; #\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;\nhttps://app.hubspot.com/contacts/4392066/deal/16964514951/?engagement=96069102624\n https://app.staging.jiminny.com/playback/d5df34dc-bd66-4ff5-a7b3-8d3be30322a0\n\nSELECT * FROM activities WHERE uuid_to_bin('04fdcd0d-818f-4c53-92dc-6f18bc753ffd') = uuid;\n# 609126 softphone tr. 11241\n\nSELECT * FROM activities WHERE uuid_to_bin('6521bfcd-5a30-46e5-9f74-5440fd48befd') = uuid;\n# 608874 conference tr. 11226 crmId: 103422236596\n\nselect * from ai_prompts where transcription_id IN (11241, 11226);\nselect * from activity_summary_logs where activity_id = 608874;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nselect * from crm_field_data where activity_id = 1223;\n\nselect * from crm_layouts where crm_configuration_id = 2;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (554);\nselect * from crm_fields where crm_configuration_id = 11 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id IN (1455,1450);\n\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id = 971;\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id IN (6494,6495,6496,6497,6498,6499);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u\n on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 2 and sa.provider = 'hubspot';\n\nselect * from social_accounts where id = 1499;\n\nselect * from opportunities where team_id = 2\nand crm_provider_id IN ('51317301383');\n\nselect * from contacts where id = 85;\n\nselect * from opportunities where team_id = 2 order by id desc;\nselect * from opportunities where team_id = 2 and crm_provider_id = '51317301383'; # 5112\nselect * from opportunities where team_id = 2 and crm_provider_id = '55976759904'; # 5112\nselect * from opportunity_contacts where opportunity_id = 5117;\nselect * from crm_field_data where object_id = 1365;\nSELECT * FROM crm_fields WHERE id IN (1405, 1407, 1972, 2128);\n\nselect * from features;\nselect * from team_features where team_id IN (1);\nselect * from team_features where feature_id IN (36);\n\nSHOW CREATE TABLE opportunity_contacts;\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '111751';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from opportunities where team_id = 2 and crm_provider_id IN ('374720564','14527423589','49908861993','50435771779'); # 1365\nSELECT * FROM opportunity_contacts WHERE opportunity_id = '414';\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '131501';\nselect * from contacts where id in (414, 464);\n\nselect * from activities where crm_configuration_id = 2;\n\nselect settings from crm_configurations where id = 11;\n\nselect * from teams; # 1, 2\nselect * from users;\nselect * from crm_configurations where id = 39;\nselect * from team_features where team_id = 2;\nselect * from features;\n# SELECT * FROM opportunities WHERE crm_configuration_id = 2\n# order by id desc;\n# and crm_provider_id = '49908861993';\n\n\nselect * from activity_providers where id IN (443, 202, 203, 227);\n\nselect * from activity_imports where id = 795889;\n\nselect c.id, c.provider, c.settings, t.* from teams t join crm_configurations c on t.id = c.team_id\nwhere c.provider = 'hubspot';\n\nselect * from crm_configurations crm JOIN teams t on crm.team_id = t.id\nwhere provider = 'hubspot';\nSELECT * FROM teams WHERE id = 31;\nSELECT * FROM users WHERE id = 257;\nSELECT * FROM opportunities WHERE team_id = 2;\n\nselect * from opportunity_contacts where opportunity_id = 5124;\nselect * from contacts where id IN (3850,3853,3851,4073,4140,4155,4480,4530,4623,5986,513,687,1806,1523,3613)\n\nselect * from activities where crm_configuration_id = 13;\n\nSELECT * FROM activities WHERE uuid_to_bin('826619ce-ec8e-4e59-8467-a01f5f6ad71e') = uuid; # 418141\n\n\nselect id, team_id, crm_provider_id from crm_configurations where provider = 'hubspot' and crm_provider_id IS NOT NULL;\nSELECT * FROM accounts WHERE team_id = 2 and crm_provider_id = '1212213464' order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 and account_id = 5189 order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 order by id desc;\nselect * from opportunity_contacts where contact_id = 6223;\nSELECT * FROM opportunities WHERE team_id = 2 and account_id = 5189 order by id desc;\n\nselect * from crm_profiles where crm_configuration_id = 2;\n\nselect * from activities where account_id = 46;","depth":4,"on_screen":true,"value":"# **************************** HS **************************************\n\nselect * from teams where id = 2; # 2\nselect * from features; # 2\nselect * from team_features where team_id = 2; # 2\nselect * from crm_configurations where id = 2; # 2\nselect * from users where team_id = 2; #\nselect * from playbooks where team_id = 2; # event 38\nselect * from playbook_categories where playbook_id = 38; #\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;\nhttps://app.hubspot.com/contacts/4392066/deal/16964514951/?engagement=96069102624\n https://app.staging.jiminny.com/playback/d5df34dc-bd66-4ff5-a7b3-8d3be30322a0\n\nSELECT * FROM activities WHERE uuid_to_bin('04fdcd0d-818f-4c53-92dc-6f18bc753ffd') = uuid;\n# 609126 softphone tr. 11241\n\nSELECT * FROM activities WHERE uuid_to_bin('6521bfcd-5a30-46e5-9f74-5440fd48befd') = uuid;\n# 608874 conference tr. 11226 crmId: 103422236596\n\nselect * from ai_prompts where transcription_id IN (11241, 11226);\nselect * from activity_summary_logs where activity_id = 608874;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nselect * from crm_field_data where activity_id = 1223;\n\nselect * from crm_layouts where crm_configuration_id = 2;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (554);\nselect * from crm_fields where crm_configuration_id = 11 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id IN (1455,1450);\n\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id = 971;\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id IN (6494,6495,6496,6497,6498,6499);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u\n on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 2 and sa.provider = 'hubspot';\n\nselect * from social_accounts where id = 1499;\n\nselect * from opportunities where team_id = 2\nand crm_provider_id IN ('51317301383');\n\nselect * from contacts where id = 85;\n\nselect * from opportunities where team_id = 2 order by id desc;\nselect * from opportunities where team_id = 2 and crm_provider_id = '51317301383'; # 5112\nselect * from opportunities where team_id = 2 and crm_provider_id = '55976759904'; # 5112\nselect * from opportunity_contacts where opportunity_id = 5117;\nselect * from crm_field_data where object_id = 1365;\nSELECT * FROM crm_fields WHERE id IN (1405, 1407, 1972, 2128);\n\nselect * from features;\nselect * from team_features where team_id IN (1);\nselect * from team_features where feature_id IN (36);\n\nSHOW CREATE TABLE opportunity_contacts;\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '111751';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from opportunities where team_id = 2 and crm_provider_id IN ('374720564','14527423589','49908861993','50435771779'); # 1365\nSELECT * FROM opportunity_contacts WHERE opportunity_id = '414';\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '131501';\nselect * from contacts where id in (414, 464);\n\nselect * from activities where crm_configuration_id = 2;\n\nselect settings from crm_configurations where id = 11;\n\nselect * from teams; # 1, 2\nselect * from users;\nselect * from crm_configurations where id = 39;\nselect * from team_features where team_id = 2;\nselect * from features;\n# SELECT * FROM opportunities WHERE crm_configuration_id = 2\n# order by id desc;\n# and crm_provider_id = '49908861993';\n\n\nselect * from activity_providers where id IN (443, 202, 203, 227);\n\nselect * from activity_imports where id = 795889;\n\nselect c.id, c.provider, c.settings, t.* from teams t join crm_configurations c on t.id = c.team_id\nwhere c.provider = 'hubspot';\n\nselect * from crm_configurations crm JOIN teams t on crm.team_id = t.id\nwhere provider = 'hubspot';\nSELECT * FROM teams WHERE id = 31;\nSELECT * FROM users WHERE id = 257;\nSELECT * FROM opportunities WHERE team_id = 2;\n\nselect * from opportunity_contacts where opportunity_id = 5124;\nselect * from contacts where id IN (3850,3853,3851,4073,4140,4155,4480,4530,4623,5986,513,687,1806,1523,3613)\n\nselect * from activities where crm_configuration_id = 13;\n\nSELECT * FROM activities WHERE uuid_to_bin('826619ce-ec8e-4e59-8467-a01f5f6ad71e') = uuid; # 418141\n\n\nselect id, team_id, crm_provider_id from crm_configurations where provider = 'hubspot' and crm_provider_id IS NOT NULL;\nSELECT * FROM accounts WHERE team_id = 2 and crm_provider_id = '1212213464' order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 and account_id = 5189 order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 order by id desc;\nselect * from opportunity_contacts where contact_id = 6223;\nSELECT * FROM opportunities WHERE team_id = 2 and account_id = 5189 order by id desc;\n\nselect * from crm_profiles where crm_configuration_id = 2;\n\nselect * from activities where account_id = 46;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n \n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n$body = json_decode((string) $response->getBody(), true);\n \n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n \n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n$body = json_decode((string) $response->getBody(), true);\n \n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2694430278241490955
|
919851285978945636
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
6
1
6
Previous Highlighted Error
Next Highlighted Error
# [PASSWORD_DOTS] HS [PASSWORD_DOTS]
select * from teams where id = 2; # 2
select * from features; # 2
select * from team_features where team_id = 2; # 2
select * from crm_configurations where id = 2; # 2
select * from users where team_id = 2; #
select * from playbooks where team_id = 2; # event 38
select * from playbook_categories where playbook_id = 38; #
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;
[URL_WITH_CREDENTIALS] CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2660
|
112
|
1
|
2026-05-07T11:34:25.670362+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153665670_m2.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
6
1
6
Previous Highlighted Error
Next Highlighted Error
# [PASSWORD_DOTS] HS [PASSWORD_DOTS]
select * from teams where id = 2; # 2
select * from features; # 2
select * from team_features where team_id = 2; # 2
select * from crm_configurations where id = 2; # 2
select * from users where team_id = 2; #
select * from playbooks where team_id = 2; # event 38
select * from playbook_categories where playbook_id = 38; #
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;
[URL_WITH_CREDENTIALS] CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.38297874,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.39162233,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.40259308,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.4112367,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.41988033,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.43085107,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.4418218,"top":0.09896249,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.46841756,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.4793883,"top":0.09896249,"width":0.029587766,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.65359044,"top":0.09896249,"width":0.02825798,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.6399601,"top":0.123703115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.6499335,"top":0.123703115,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":4,"bounds":{"left":0.65924203,"top":0.123703115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.66888297,"top":0.12210695,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.6761968,"top":0.12210695,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"# **************************** HS **************************************\n\nselect * from teams where id = 2; # 2\nselect * from features; # 2\nselect * from team_features where team_id = 2; # 2\nselect * from crm_configurations where id = 2; # 2\nselect * from users where team_id = 2; #\nselect * from playbooks where team_id = 2; # event 38\nselect * from playbook_categories where playbook_id = 38; #\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;\nhttps://app.hubspot.com/contacts/4392066/deal/16964514951/?engagement=96069102624\n https://app.staging.jiminny.com/playback/d5df34dc-bd66-4ff5-a7b3-8d3be30322a0\n\nSELECT * FROM activities WHERE uuid_to_bin('04fdcd0d-818f-4c53-92dc-6f18bc753ffd') = uuid;\n# 609126 softphone tr. 11241\n\nSELECT * FROM activities WHERE uuid_to_bin('6521bfcd-5a30-46e5-9f74-5440fd48befd') = uuid;\n# 608874 conference tr. 11226 crmId: 103422236596\n\nselect * from ai_prompts where transcription_id IN (11241, 11226);\nselect * from activity_summary_logs where activity_id = 608874;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nselect * from crm_field_data where activity_id = 1223;\n\nselect * from crm_layouts where crm_configuration_id = 2;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (554);\nselect * from crm_fields where crm_configuration_id = 11 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id IN (1455,1450);\n\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id = 971;\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id IN (6494,6495,6496,6497,6498,6499);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u\n on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 2 and sa.provider = 'hubspot';\n\nselect * from social_accounts where id = 1499;\n\nselect * from opportunities where team_id = 2\nand crm_provider_id IN ('51317301383');\n\nselect * from contacts where id = 85;\n\nselect * from opportunities where team_id = 2 order by id desc;\nselect * from opportunities where team_id = 2 and crm_provider_id = '51317301383'; # 5112\nselect * from opportunities where team_id = 2 and crm_provider_id = '55976759904'; # 5112\nselect * from opportunity_contacts where opportunity_id = 5117;\nselect * from crm_field_data where object_id = 1365;\nSELECT * FROM crm_fields WHERE id IN (1405, 1407, 1972, 2128);\n\nselect * from features;\nselect * from team_features where team_id IN (1);\nselect * from team_features where feature_id IN (36);\n\nSHOW CREATE TABLE opportunity_contacts;\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '111751';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from opportunities where team_id = 2 and crm_provider_id IN ('374720564','14527423589','49908861993','50435771779'); # 1365\nSELECT * FROM opportunity_contacts WHERE opportunity_id = '414';\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '131501';\nselect * from contacts where id in (414, 464);\n\nselect * from activities where crm_configuration_id = 2;\n\nselect settings from crm_configurations where id = 11;\n\nselect * from teams; # 1, 2\nselect * from users;\nselect * from crm_configurations where id = 39;\nselect * from team_features where team_id = 2;\nselect * from features;\n# SELECT * FROM opportunities WHERE crm_configuration_id = 2\n# order by id desc;\n# and crm_provider_id = '49908861993';\n\n\nselect * from activity_providers where id IN (443, 202, 203, 227);\n\nselect * from activity_imports where id = 795889;\n\nselect c.id, c.provider, c.settings, t.* from teams t join crm_configurations c on t.id = c.team_id\nwhere c.provider = 'hubspot';\n\nselect * from crm_configurations crm JOIN teams t on crm.team_id = t.id\nwhere provider = 'hubspot';\nSELECT * FROM teams WHERE id = 31;\nSELECT * FROM users WHERE id = 257;\nSELECT * FROM opportunities WHERE team_id = 2;\n\nselect * from opportunity_contacts where opportunity_id = 5124;\nselect * from contacts where id IN (3850,3853,3851,4073,4140,4155,4480,4530,4623,5986,513,687,1806,1523,3613)\n\nselect * from activities where crm_configuration_id = 13;\n\nSELECT * FROM activities WHERE uuid_to_bin('826619ce-ec8e-4e59-8467-a01f5f6ad71e') = uuid; # 418141\n\n\nselect id, team_id, crm_provider_id from crm_configurations where provider = 'hubspot' and crm_provider_id IS NOT NULL;\nSELECT * FROM accounts WHERE team_id = 2 and crm_provider_id = '1212213464' order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 and account_id = 5189 order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 order by id desc;\nselect * from opportunity_contacts where contact_id = 6223;\nSELECT * FROM opportunities WHERE team_id = 2 and account_id = 5189 order by id desc;\n\nselect * from crm_profiles where crm_configuration_id = 2;\n\nselect * from activities where account_id = 46;","depth":4,"on_screen":true,"value":"# **************************** HS **************************************\n\nselect * from teams where id = 2; # 2\nselect * from features; # 2\nselect * from team_features where team_id = 2; # 2\nselect * from crm_configurations where id = 2; # 2\nselect * from users where team_id = 2; #\nselect * from playbooks where team_id = 2; # event 38\nselect * from playbook_categories where playbook_id = 38; #\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;\nhttps://app.hubspot.com/contacts/4392066/deal/16964514951/?engagement=96069102624\n https://app.staging.jiminny.com/playback/d5df34dc-bd66-4ff5-a7b3-8d3be30322a0\n\nSELECT * FROM activities WHERE uuid_to_bin('04fdcd0d-818f-4c53-92dc-6f18bc753ffd') = uuid;\n# 609126 softphone tr. 11241\n\nSELECT * FROM activities WHERE uuid_to_bin('6521bfcd-5a30-46e5-9f74-5440fd48befd') = uuid;\n# 608874 conference tr. 11226 crmId: 103422236596\n\nselect * from ai_prompts where transcription_id IN (11241, 11226);\nselect * from activity_summary_logs where activity_id = 608874;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nselect * from crm_field_data where activity_id = 1223;\n\nselect * from crm_layouts where crm_configuration_id = 2;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id IN (554);\nselect * from crm_fields where crm_configuration_id = 11 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id IN (1455,1450);\n\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id = 971;\nSELECT * FROM crm_field_data WHERE crm_layout_entity_id IN (6494,6495,6496,6497,6498,6499);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u\n on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 2 and sa.provider = 'hubspot';\n\nselect * from social_accounts where id = 1499;\n\nselect * from opportunities where team_id = 2\nand crm_provider_id IN ('51317301383');\n\nselect * from contacts where id = 85;\n\nselect * from opportunities where team_id = 2 order by id desc;\nselect * from opportunities where team_id = 2 and crm_provider_id = '51317301383'; # 5112\nselect * from opportunities where team_id = 2 and crm_provider_id = '55976759904'; # 5112\nselect * from opportunity_contacts where opportunity_id = 5117;\nselect * from crm_field_data where object_id = 1365;\nSELECT * FROM crm_fields WHERE id IN (1405, 1407, 1972, 2128);\n\nselect * from features;\nselect * from team_features where team_id IN (1);\nselect * from team_features where feature_id IN (36);\n\nSHOW CREATE TABLE opportunity_contacts;\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '111751';\n\n# $slug = 'HUBSPOT_WEBHOOK_SYNC';\n# $team = Jiminny\\Models\\Team::find(2);\n# $feature = Feature::query()->where('slug', $slug)->first();\n# TeamFeature::query()->create(['feature_id' => $feature->getId(),'team_id' => $team->getId()]);\n\n# hubspot_webhook_metrics\n\nselect * from opportunities where team_id = 2 and crm_provider_id IN ('374720564','14527423589','49908861993','50435771779'); # 1365\nSELECT * FROM opportunity_contacts WHERE opportunity_id = '414';\nSELECT * FROM opportunity_contacts WHERE crm_provider_id = '131501';\nselect * from contacts where id in (414, 464);\n\nselect * from activities where crm_configuration_id = 2;\n\nselect settings from crm_configurations where id = 11;\n\nselect * from teams; # 1, 2\nselect * from users;\nselect * from crm_configurations where id = 39;\nselect * from team_features where team_id = 2;\nselect * from features;\n# SELECT * FROM opportunities WHERE crm_configuration_id = 2\n# order by id desc;\n# and crm_provider_id = '49908861993';\n\n\nselect * from activity_providers where id IN (443, 202, 203, 227);\n\nselect * from activity_imports where id = 795889;\n\nselect c.id, c.provider, c.settings, t.* from teams t join crm_configurations c on t.id = c.team_id\nwhere c.provider = 'hubspot';\n\nselect * from crm_configurations crm JOIN teams t on crm.team_id = t.id\nwhere provider = 'hubspot';\nSELECT * FROM teams WHERE id = 31;\nSELECT * FROM users WHERE id = 257;\nSELECT * FROM opportunities WHERE team_id = 2;\n\nselect * from opportunity_contacts where opportunity_id = 5124;\nselect * from contacts where id IN (3850,3853,3851,4073,4140,4155,4480,4530,4623,5986,513,687,1806,1523,3613)\n\nselect * from activities where crm_configuration_id = 13;\n\nSELECT * FROM activities WHERE uuid_to_bin('826619ce-ec8e-4e59-8467-a01f5f6ad71e') = uuid; # 418141\n\n\nselect id, team_id, crm_provider_id from crm_configurations where provider = 'hubspot' and crm_provider_id IS NOT NULL;\nSELECT * FROM accounts WHERE team_id = 2 and crm_provider_id = '1212213464' order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 and account_id = 5189 order by id desc;\nSELECT * FROM contacts WHERE team_id = 2 order by id desc;\nselect * from opportunity_contacts where contact_id = 6223;\nSELECT * FROM opportunities WHERE team_id = 2 and account_id = 5189 order by id desc;\n\nselect * from crm_profiles where crm_configuration_id = 2;\n\nselect * from activities where account_id = 46;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.010305851,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n \n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n$body = json_decode((string) $response->getBody(), true);\n \n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n \n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n$body = json_decode((string) $response->getBody(), true);\n \n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2694430278241490955
|
919851285978945636
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
6
1
6
Previous Highlighted Error
Next Highlighted Error
# [PASSWORD_DOTS] HS [PASSWORD_DOTS]
select * from teams where id = 2; # 2
select * from features; # 2
select * from team_features where team_id = 2; # 2
select * from crm_configurations where id = 2; # 2
select * from users where team_id = 2; #
select * from playbooks where team_id = 2; # event 38
select * from playbook_categories where playbook_id = 38; #
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id is not null order by id desc;
[URL_WITH_CREDENTIALS] CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2770
|
113
|
1
|
2026-05-07T11:39:37.580111+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153977580_m1.jpg...
|
PhpStorm
|
faVsco.js – WebhookSyncBatchProcessor.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Illuminate\Support\Facades\Log;
use Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportContactBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportOpportunityBatch;
/**
* Processes batches of HubSpot objects collected from webhook events.
*
* This service drains Redis sets containing CRM IDs that were collected from webhook
* property change and association change events. It dispatches Import*Batch jobs to
* process the objects in batches of 100.
*
* Design Decisions:
*
* 1. Redis Service Injection:
* BatchSyncRedisService is injected via constructor for testability and to avoid
* tight coupling to Redis facade. This allows easy mocking in tests.
*
* 2. Multi-Object Type Support:
* processBatchesForObjectType() directly with their specific object type.
*
* 3. Batch Size and Limits:
* - BATCH_SIZE = 100: HubSpot batch API limit
* - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)
*
* 4. Failure Handling:
* If job dispatch fails, IDs are requeued to Redis for the next processing cycle.
* Individual job failures are handled by the Import*Batch jobs themselves.
*/
class WebhookSyncBatchProcessor
{
public const string OBJECT_TYPE_DEAL = 'deal';
public const string OBJECT_TYPE_CONTACT = 'contact';
public const string OBJECT_TYPE_COMPANY = 'company';
private const int BATCH_SIZE = 100;
private const int MAX_BATCHES = 1000;
private const array SUPPORTED_OBJECT_TYPES = [
self::OBJECT_TYPE_DEAL,
self::OBJECT_TYPE_CONTACT,
self::OBJECT_TYPE_COMPANY,
];
public function __construct(
private BatchSyncRedisService $redisService
) {
}
/**
* Process batches for a specific object type.
*
* Drains the Redis set for the given object type and config, dispatching Import*Batch
* jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.
*
* @param string $objectType One of: 'deal', 'contact', 'company'
* @param int $configId CRM configuration ID
*
* @return int Total number of IDs dispatched to jobs
*/
public function processBatchesForObjectType(string $objectType, int $configId): int
{
if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {
Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [
'object_type' => $objectType,
'config_id' => $configId,
]);
return 0;
}
$processedCount = 0;
$batchNumber = 0;
while ($batchNumber < self::MAX_BATCHES) {
try {
$crmProviderIds = $this->redisService->getCollectedObjects(
$objectType,
$configId,
'all',
self::BATCH_SIZE
);
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'error' => $e->getMessage(),
]);
break;
}
if (empty($crmProviderIds)) {
break;
}
try {
$this->dispatchBatchJob($objectType, $configId, $crmProviderIds);
$processedCount += \count($crmProviderIds);
$batchNumber++;
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'batch_size' => \count($crmProviderIds),
'error' => $e->getMessage(),
]);
$this->requeueFailedIds($objectType, $configId, $crmProviderIds);
break;
}
}
if ($batchNumber >= self::MAX_BATCHES) {
Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [
'object_type' => $objectType,
'config_id' => $configId,
'max_batches' => self::MAX_BATCHES,
'total_dispatched' => $processedCount,
]);
}
if ($processedCount > 0) {
Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [
'object_type' => $objectType,
'config_id' => $configId,
'total_dispatched' => $processedCount,
'batches_dispatched' => $batchNumber,
]);
}
return $processedCount;
}
private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void
{
match ($objectType) {
self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),
};
}
private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void
{
$succeeded = 0;
$permanentlyFailed = [];
foreach ($crmProviderIds as $crmProviderId) {
try {
$this->redisService->collectObjectIdToBatch(
$objectType,
$crmProviderId,
$configId,
'all'
);
$succeeded++;
} catch (\Throwable $idError) {
$permanentlyFailed[] = $crmProviderId;
Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [
'object_type' => $objectType,
'config_id' => $configId,
'crm_provider_id' => $crmProviderId,
'error' => $idError->getMessage(),
]);
}
}
Log::info('[WebhookSyncBatchProcessor] Requeue completed', [
'object_type' => $objectType,
'config_id' => $configId,
'succeeded' => $succeeded,
'failed' => \count($permanentlyFailed),
'total' => \count($crmProviderIds),
]);
if (! empty($permanentlyFailed)) {
Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [
'object_type' => $objectType,
'config_id' => $configId,
'failed_ids' => $permanentlyFailed,
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportOpportunityBatch;\n\n/**\n * Processes batches of HubSpot objects collected from webhook events.\n *\n * This service drains Redis sets containing CRM IDs that were collected from webhook\n * property change and association change events. It dispatches Import*Batch jobs to\n * process the objects in batches of 100.\n *\n * Design Decisions:\n *\n * 1. Redis Service Injection:\n * BatchSyncRedisService is injected via constructor for testability and to avoid\n * tight coupling to Redis facade. This allows easy mocking in tests.\n *\n * 2. Multi-Object Type Support:\n * processBatchesForObjectType() directly with their specific object type.\n *\n * 3. Batch Size and Limits:\n * - BATCH_SIZE = 100: HubSpot batch API limit\n * - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)\n *\n * 4. Failure Handling:\n * If job dispatch fails, IDs are requeued to Redis for the next processing cycle.\n * Individual job failures are handled by the Import*Batch jobs themselves.\n */\nclass WebhookSyncBatchProcessor\n{\n public const string OBJECT_TYPE_DEAL = 'deal';\n public const string OBJECT_TYPE_CONTACT = 'contact';\n public const string OBJECT_TYPE_COMPANY = 'company';\n private const int BATCH_SIZE = 100;\n private const int MAX_BATCHES = 1000;\n\n private const array SUPPORTED_OBJECT_TYPES = [\n self::OBJECT_TYPE_DEAL,\n self::OBJECT_TYPE_CONTACT,\n self::OBJECT_TYPE_COMPANY,\n ];\n\n public function __construct(\n private BatchSyncRedisService $redisService\n ) {\n }\n\n /**\n * Process batches for a specific object type.\n *\n * Drains the Redis set for the given object type and config, dispatching Import*Batch\n * jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.\n *\n * @param string $objectType One of: 'deal', 'contact', 'company'\n * @param int $configId CRM configuration ID\n *\n * @return int Total number of IDs dispatched to jobs\n */\n public function processBatchesForObjectType(string $objectType, int $configId): int\n {\n if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {\n Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n ]);\n\n return 0;\n }\n\n $processedCount = 0;\n $batchNumber = 0;\n\n while ($batchNumber < self::MAX_BATCHES) {\n try {\n $crmProviderIds = $this->redisService->getCollectedObjects(\n $objectType,\n $configId,\n 'all',\n self::BATCH_SIZE\n );\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'error' => $e->getMessage(),\n ]);\n\n break;\n }\n\n if (empty($crmProviderIds)) {\n break;\n }\n\n try {\n $this->dispatchBatchJob($objectType, $configId, $crmProviderIds);\n\n $processedCount += \\count($crmProviderIds);\n $batchNumber++;\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'batch_size' => \\count($crmProviderIds),\n 'error' => $e->getMessage(),\n ]);\n\n $this->requeueFailedIds($objectType, $configId, $crmProviderIds);\n\n break;\n }\n }\n\n if ($batchNumber >= self::MAX_BATCHES) {\n Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'max_batches' => self::MAX_BATCHES,\n 'total_dispatched' => $processedCount,\n ]);\n }\n\n if ($processedCount > 0) {\n Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'total_dispatched' => $processedCount,\n 'batches_dispatched' => $batchNumber,\n ]);\n }\n\n return $processedCount;\n }\n\n private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void\n {\n match ($objectType) {\n self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),\n };\n }\n\n private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void\n {\n $succeeded = 0;\n $permanentlyFailed = [];\n\n foreach ($crmProviderIds as $crmProviderId) {\n try {\n $this->redisService->collectObjectIdToBatch(\n $objectType,\n $crmProviderId,\n $configId,\n 'all'\n );\n $succeeded++;\n } catch (\\Throwable $idError) {\n $permanentlyFailed[] = $crmProviderId;\n Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'crm_provider_id' => $crmProviderId,\n 'error' => $idError->getMessage(),\n ]);\n }\n }\n\n Log::info('[WebhookSyncBatchProcessor] Requeue completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'succeeded' => $succeeded,\n 'failed' => \\count($permanentlyFailed),\n 'total' => \\count($crmProviderIds),\n ]);\n\n if (! empty($permanentlyFailed)) {\n Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'failed_ids' => $permanentlyFailed,\n ]);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportOpportunityBatch;\n\n/**\n * Processes batches of HubSpot objects collected from webhook events.\n *\n * This service drains Redis sets containing CRM IDs that were collected from webhook\n * property change and association change events. It dispatches Import*Batch jobs to\n * process the objects in batches of 100.\n *\n * Design Decisions:\n *\n * 1. Redis Service Injection:\n * BatchSyncRedisService is injected via constructor for testability and to avoid\n * tight coupling to Redis facade. This allows easy mocking in tests.\n *\n * 2. Multi-Object Type Support:\n * processBatchesForObjectType() directly with their specific object type.\n *\n * 3. Batch Size and Limits:\n * - BATCH_SIZE = 100: HubSpot batch API limit\n * - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)\n *\n * 4. Failure Handling:\n * If job dispatch fails, IDs are requeued to Redis for the next processing cycle.\n * Individual job failures are handled by the Import*Batch jobs themselves.\n */\nclass WebhookSyncBatchProcessor\n{\n public const string OBJECT_TYPE_DEAL = 'deal';\n public const string OBJECT_TYPE_CONTACT = 'contact';\n public const string OBJECT_TYPE_COMPANY = 'company';\n private const int BATCH_SIZE = 100;\n private const int MAX_BATCHES = 1000;\n\n private const array SUPPORTED_OBJECT_TYPES = [\n self::OBJECT_TYPE_DEAL,\n self::OBJECT_TYPE_CONTACT,\n self::OBJECT_TYPE_COMPANY,\n ];\n\n public function __construct(\n private BatchSyncRedisService $redisService\n ) {\n }\n\n /**\n * Process batches for a specific object type.\n *\n * Drains the Redis set for the given object type and config, dispatching Import*Batch\n * jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.\n *\n * @param string $objectType One of: 'deal', 'contact', 'company'\n * @param int $configId CRM configuration ID\n *\n * @return int Total number of IDs dispatched to jobs\n */\n public function processBatchesForObjectType(string $objectType, int $configId): int\n {\n if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {\n Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n ]);\n\n return 0;\n }\n\n $processedCount = 0;\n $batchNumber = 0;\n\n while ($batchNumber < self::MAX_BATCHES) {\n try {\n $crmProviderIds = $this->redisService->getCollectedObjects(\n $objectType,\n $configId,\n 'all',\n self::BATCH_SIZE\n );\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'error' => $e->getMessage(),\n ]);\n\n break;\n }\n\n if (empty($crmProviderIds)) {\n break;\n }\n\n try {\n $this->dispatchBatchJob($objectType, $configId, $crmProviderIds);\n\n $processedCount += \\count($crmProviderIds);\n $batchNumber++;\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'batch_size' => \\count($crmProviderIds),\n 'error' => $e->getMessage(),\n ]);\n\n $this->requeueFailedIds($objectType, $configId, $crmProviderIds);\n\n break;\n }\n }\n\n if ($batchNumber >= self::MAX_BATCHES) {\n Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'max_batches' => self::MAX_BATCHES,\n 'total_dispatched' => $processedCount,\n ]);\n }\n\n if ($processedCount > 0) {\n Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'total_dispatched' => $processedCount,\n 'batches_dispatched' => $batchNumber,\n ]);\n }\n\n return $processedCount;\n }\n\n private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void\n {\n match ($objectType) {\n self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),\n };\n }\n\n private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void\n {\n $succeeded = 0;\n $permanentlyFailed = [];\n\n foreach ($crmProviderIds as $crmProviderId) {\n try {\n $this->redisService->collectObjectIdToBatch(\n $objectType,\n $crmProviderId,\n $configId,\n 'all'\n );\n $succeeded++;\n } catch (\\Throwable $idError) {\n $permanentlyFailed[] = $crmProviderId;\n Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'crm_provider_id' => $crmProviderId,\n 'error' => $idError->getMessage(),\n ]);\n }\n }\n\n Log::info('[WebhookSyncBatchProcessor] Requeue completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'succeeded' => $succeeded,\n 'failed' => \\count($permanentlyFailed),\n 'total' => \\count($crmProviderIds),\n ]);\n\n if (! empty($permanentlyFailed)) {\n Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'failed_ids' => $permanentlyFailed,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8010415956189026930
|
-8883631698440123185
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Illuminate\Support\Facades\Log;
use Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportContactBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportOpportunityBatch;
/**
* Processes batches of HubSpot objects collected from webhook events.
*
* This service drains Redis sets containing CRM IDs that were collected from webhook
* property change and association change events. It dispatches Import*Batch jobs to
* process the objects in batches of 100.
*
* Design Decisions:
*
* 1. Redis Service Injection:
* BatchSyncRedisService is injected via constructor for testability and to avoid
* tight coupling to Redis facade. This allows easy mocking in tests.
*
* 2. Multi-Object Type Support:
* processBatchesForObjectType() directly with their specific object type.
*
* 3. Batch Size and Limits:
* - BATCH_SIZE = 100: HubSpot batch API limit
* - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)
*
* 4. Failure Handling:
* If job dispatch fails, IDs are requeued to Redis for the next processing cycle.
* Individual job failures are handled by the Import*Batch jobs themselves.
*/
class WebhookSyncBatchProcessor
{
public const string OBJECT_TYPE_DEAL = 'deal';
public const string OBJECT_TYPE_CONTACT = 'contact';
public const string OBJECT_TYPE_COMPANY = 'company';
private const int BATCH_SIZE = 100;
private const int MAX_BATCHES = 1000;
private const array SUPPORTED_OBJECT_TYPES = [
self::OBJECT_TYPE_DEAL,
self::OBJECT_TYPE_CONTACT,
self::OBJECT_TYPE_COMPANY,
];
public function __construct(
private BatchSyncRedisService $redisService
) {
}
/**
* Process batches for a specific object type.
*
* Drains the Redis set for the given object type and config, dispatching Import*Batch
* jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.
*
* @param string $objectType One of: 'deal', 'contact', 'company'
* @param int $configId CRM configuration ID
*
* @return int Total number of IDs dispatched to jobs
*/
public function processBatchesForObjectType(string $objectType, int $configId): int
{
if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {
Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [
'object_type' => $objectType,
'config_id' => $configId,
]);
return 0;
}
$processedCount = 0;
$batchNumber = 0;
while ($batchNumber < self::MAX_BATCHES) {
try {
$crmProviderIds = $this->redisService->getCollectedObjects(
$objectType,
$configId,
'all',
self::BATCH_SIZE
);
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'error' => $e->getMessage(),
]);
break;
}
if (empty($crmProviderIds)) {
break;
}
try {
$this->dispatchBatchJob($objectType, $configId, $crmProviderIds);
$processedCount += \count($crmProviderIds);
$batchNumber++;
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'batch_size' => \count($crmProviderIds),
'error' => $e->getMessage(),
]);
$this->requeueFailedIds($objectType, $configId, $crmProviderIds);
break;
}
}
if ($batchNumber >= self::MAX_BATCHES) {
Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [
'object_type' => $objectType,
'config_id' => $configId,
'max_batches' => self::MAX_BATCHES,
'total_dispatched' => $processedCount,
]);
}
if ($processedCount > 0) {
Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [
'object_type' => $objectType,
'config_id' => $configId,
'total_dispatched' => $processedCount,
'batches_dispatched' => $batchNumber,
]);
}
return $processedCount;
}
private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void
{
match ($objectType) {
self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),
};
}
private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void
{
$succeeded = 0;
$permanentlyFailed = [];
foreach ($crmProviderIds as $crmProviderId) {
try {
$this->redisService->collectObjectIdToBatch(
$objectType,
$crmProviderId,
$configId,
'all'
);
$succeeded++;
} catch (\Throwable $idError) {
$permanentlyFailed[] = $crmProviderId;
Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [
'object_type' => $objectType,
'config_id' => $configId,
'crm_provider_id' => $crmProviderId,
'error' => $idError->getMessage(),
]);
}
}
Log::info('[WebhookSyncBatchProcessor] Requeue completed', [
'object_type' => $objectType,
'config_id' => $configId,
'succeeded' => $succeeded,
'failed' => \count($permanentlyFailed),
'total' => \count($crmProviderIds),
]);
if (! empty($permanentlyFailed)) {
Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [
'object_type' => $objectType,
'config_id' => $configId,
'failed_ids' => $permanentlyFailed,
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
2768
|
NULL
|
NULL
|
NULL
|
|
2771
|
114
|
1
|
2026-05-07T11:39:37.580002+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153977580_m2.jpg...
|
PhpStorm
|
faVsco.js – WebhookSyncBatchProcessor.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Illuminate\Support\Facades\Log;
use Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportContactBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportOpportunityBatch;
/**
* Processes batches of HubSpot objects collected from webhook events.
*
* This service drains Redis sets containing CRM IDs that were collected from webhook
* property change and association change events. It dispatches Import*Batch jobs to
* process the objects in batches of 100.
*
* Design Decisions:
*
* 1. Redis Service Injection:
* BatchSyncRedisService is injected via constructor for testability and to avoid
* tight coupling to Redis facade. This allows easy mocking in tests.
*
* 2. Multi-Object Type Support:
* processBatchesForObjectType() directly with their specific object type.
*
* 3. Batch Size and Limits:
* - BATCH_SIZE = 100: HubSpot batch API limit
* - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)
*
* 4. Failure Handling:
* If job dispatch fails, IDs are requeued to Redis for the next processing cycle.
* Individual job failures are handled by the Import*Batch jobs themselves.
*/
class WebhookSyncBatchProcessor
{
public const string OBJECT_TYPE_DEAL = 'deal';
public const string OBJECT_TYPE_CONTACT = 'contact';
public const string OBJECT_TYPE_COMPANY = 'company';
private const int BATCH_SIZE = 100;
private const int MAX_BATCHES = 1000;
private const array SUPPORTED_OBJECT_TYPES = [
self::OBJECT_TYPE_DEAL,
self::OBJECT_TYPE_CONTACT,
self::OBJECT_TYPE_COMPANY,
];
public function __construct(
private BatchSyncRedisService $redisService
) {
}
/**
* Process batches for a specific object type.
*
* Drains the Redis set for the given object type and config, dispatching Import*Batch
* jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.
*
* @param string $objectType One of: 'deal', 'contact', 'company'
* @param int $configId CRM configuration ID
*
* @return int Total number of IDs dispatched to jobs
*/
public function processBatchesForObjectType(string $objectType, int $configId): int
{
if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {
Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [
'object_type' => $objectType,
'config_id' => $configId,
]);
return 0;
}
$processedCount = 0;
$batchNumber = 0;
while ($batchNumber < self::MAX_BATCHES) {
try {
$crmProviderIds = $this->redisService->getCollectedObjects(
$objectType,
$configId,
'all',
self::BATCH_SIZE
);
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'error' => $e->getMessage(),
]);
break;
}
if (empty($crmProviderIds)) {
break;
}
try {
$this->dispatchBatchJob($objectType, $configId, $crmProviderIds);
$processedCount += \count($crmProviderIds);
$batchNumber++;
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'batch_size' => \count($crmProviderIds),
'error' => $e->getMessage(),
]);
$this->requeueFailedIds($objectType, $configId, $crmProviderIds);
break;
}
}
if ($batchNumber >= self::MAX_BATCHES) {
Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [
'object_type' => $objectType,
'config_id' => $configId,
'max_batches' => self::MAX_BATCHES,
'total_dispatched' => $processedCount,
]);
}
if ($processedCount > 0) {
Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [
'object_type' => $objectType,
'config_id' => $configId,
'total_dispatched' => $processedCount,
'batches_dispatched' => $batchNumber,
]);
}
return $processedCount;
}
private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void
{
match ($objectType) {
self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),
};
}
private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void
{
$succeeded = 0;
$permanentlyFailed = [];
foreach ($crmProviderIds as $crmProviderId) {
try {
$this->redisService->collectObjectIdToBatch(
$objectType,
$crmProviderId,
$configId,
'all'
);
$succeeded++;
} catch (\Throwable $idError) {
$permanentlyFailed[] = $crmProviderId;
Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [
'object_type' => $objectType,
'config_id' => $configId,
'crm_provider_id' => $crmProviderId,
'error' => $idError->getMessage(),
]);
}
}
Log::info('[WebhookSyncBatchProcessor] Requeue completed', [
'object_type' => $objectType,
'config_id' => $configId,
'succeeded' => $succeeded,
'failed' => \count($permanentlyFailed),
'total' => \count($crmProviderIds),
]);
if (! empty($permanentlyFailed)) {
Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [
'object_type' => $objectType,
'config_id' => $configId,
'failed_ids' => $permanentlyFailed,
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"bounds":{"left":0.4950133,"top":0.17478053,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.5049867,"top":0.17478053,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.17318435,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.17318435,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportOpportunityBatch;\n\n/**\n * Processes batches of HubSpot objects collected from webhook events.\n *\n * This service drains Redis sets containing CRM IDs that were collected from webhook\n * property change and association change events. It dispatches Import*Batch jobs to\n * process the objects in batches of 100.\n *\n * Design Decisions:\n *\n * 1. Redis Service Injection:\n * BatchSyncRedisService is injected via constructor for testability and to avoid\n * tight coupling to Redis facade. This allows easy mocking in tests.\n *\n * 2. Multi-Object Type Support:\n * processBatchesForObjectType() directly with their specific object type.\n *\n * 3. Batch Size and Limits:\n * - BATCH_SIZE = 100: HubSpot batch API limit\n * - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)\n *\n * 4. Failure Handling:\n * If job dispatch fails, IDs are requeued to Redis for the next processing cycle.\n * Individual job failures are handled by the Import*Batch jobs themselves.\n */\nclass WebhookSyncBatchProcessor\n{\n public const string OBJECT_TYPE_DEAL = 'deal';\n public const string OBJECT_TYPE_CONTACT = 'contact';\n public const string OBJECT_TYPE_COMPANY = 'company';\n private const int BATCH_SIZE = 100;\n private const int MAX_BATCHES = 1000;\n\n private const array SUPPORTED_OBJECT_TYPES = [\n self::OBJECT_TYPE_DEAL,\n self::OBJECT_TYPE_CONTACT,\n self::OBJECT_TYPE_COMPANY,\n ];\n\n public function __construct(\n private BatchSyncRedisService $redisService\n ) {\n }\n\n /**\n * Process batches for a specific object type.\n *\n * Drains the Redis set for the given object type and config, dispatching Import*Batch\n * jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.\n *\n * @param string $objectType One of: 'deal', 'contact', 'company'\n * @param int $configId CRM configuration ID\n *\n * @return int Total number of IDs dispatched to jobs\n */\n public function processBatchesForObjectType(string $objectType, int $configId): int\n {\n if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {\n Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n ]);\n\n return 0;\n }\n\n $processedCount = 0;\n $batchNumber = 0;\n\n while ($batchNumber < self::MAX_BATCHES) {\n try {\n $crmProviderIds = $this->redisService->getCollectedObjects(\n $objectType,\n $configId,\n 'all',\n self::BATCH_SIZE\n );\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'error' => $e->getMessage(),\n ]);\n\n break;\n }\n\n if (empty($crmProviderIds)) {\n break;\n }\n\n try {\n $this->dispatchBatchJob($objectType, $configId, $crmProviderIds);\n\n $processedCount += \\count($crmProviderIds);\n $batchNumber++;\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'batch_size' => \\count($crmProviderIds),\n 'error' => $e->getMessage(),\n ]);\n\n $this->requeueFailedIds($objectType, $configId, $crmProviderIds);\n\n break;\n }\n }\n\n if ($batchNumber >= self::MAX_BATCHES) {\n Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'max_batches' => self::MAX_BATCHES,\n 'total_dispatched' => $processedCount,\n ]);\n }\n\n if ($processedCount > 0) {\n Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'total_dispatched' => $processedCount,\n 'batches_dispatched' => $batchNumber,\n ]);\n }\n\n return $processedCount;\n }\n\n private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void\n {\n match ($objectType) {\n self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),\n };\n }\n\n private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void\n {\n $succeeded = 0;\n $permanentlyFailed = [];\n\n foreach ($crmProviderIds as $crmProviderId) {\n try {\n $this->redisService->collectObjectIdToBatch(\n $objectType,\n $crmProviderId,\n $configId,\n 'all'\n );\n $succeeded++;\n } catch (\\Throwable $idError) {\n $permanentlyFailed[] = $crmProviderId;\n Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'crm_provider_id' => $crmProviderId,\n 'error' => $idError->getMessage(),\n ]);\n }\n }\n\n Log::info('[WebhookSyncBatchProcessor] Requeue completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'succeeded' => $succeeded,\n 'failed' => \\count($permanentlyFailed),\n 'total' => \\count($crmProviderIds),\n ]);\n\n if (! empty($permanentlyFailed)) {\n Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'failed_ids' => $permanentlyFailed,\n ]);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportAccountBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportContactBatch;\nuse Jiminny\\Jobs\\Crm\\Hubspot\\ImportOpportunityBatch;\n\n/**\n * Processes batches of HubSpot objects collected from webhook events.\n *\n * This service drains Redis sets containing CRM IDs that were collected from webhook\n * property change and association change events. It dispatches Import*Batch jobs to\n * process the objects in batches of 100.\n *\n * Design Decisions:\n *\n * 1. Redis Service Injection:\n * BatchSyncRedisService is injected via constructor for testability and to avoid\n * tight coupling to Redis facade. This allows easy mocking in tests.\n *\n * 2. Multi-Object Type Support:\n * processBatchesForObjectType() directly with their specific object type.\n *\n * 3. Batch Size and Limits:\n * - BATCH_SIZE = 100: HubSpot batch API limit\n * - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)\n *\n * 4. Failure Handling:\n * If job dispatch fails, IDs are requeued to Redis for the next processing cycle.\n * Individual job failures are handled by the Import*Batch jobs themselves.\n */\nclass WebhookSyncBatchProcessor\n{\n public const string OBJECT_TYPE_DEAL = 'deal';\n public const string OBJECT_TYPE_CONTACT = 'contact';\n public const string OBJECT_TYPE_COMPANY = 'company';\n private const int BATCH_SIZE = 100;\n private const int MAX_BATCHES = 1000;\n\n private const array SUPPORTED_OBJECT_TYPES = [\n self::OBJECT_TYPE_DEAL,\n self::OBJECT_TYPE_CONTACT,\n self::OBJECT_TYPE_COMPANY,\n ];\n\n public function __construct(\n private BatchSyncRedisService $redisService\n ) {\n }\n\n /**\n * Process batches for a specific object type.\n *\n * Drains the Redis set for the given object type and config, dispatching Import*Batch\n * jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.\n *\n * @param string $objectType One of: 'deal', 'contact', 'company'\n * @param int $configId CRM configuration ID\n *\n * @return int Total number of IDs dispatched to jobs\n */\n public function processBatchesForObjectType(string $objectType, int $configId): int\n {\n if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {\n Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n ]);\n\n return 0;\n }\n\n $processedCount = 0;\n $batchNumber = 0;\n\n while ($batchNumber < self::MAX_BATCHES) {\n try {\n $crmProviderIds = $this->redisService->getCollectedObjects(\n $objectType,\n $configId,\n 'all',\n self::BATCH_SIZE\n );\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'error' => $e->getMessage(),\n ]);\n\n break;\n }\n\n if (empty($crmProviderIds)) {\n break;\n }\n\n try {\n $this->dispatchBatchJob($objectType, $configId, $crmProviderIds);\n\n $processedCount += \\count($crmProviderIds);\n $batchNumber++;\n } catch (\\Throwable $e) {\n Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'batch_number' => $batchNumber,\n 'batch_size' => \\count($crmProviderIds),\n 'error' => $e->getMessage(),\n ]);\n\n $this->requeueFailedIds($objectType, $configId, $crmProviderIds);\n\n break;\n }\n }\n\n if ($batchNumber >= self::MAX_BATCHES) {\n Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'max_batches' => self::MAX_BATCHES,\n 'total_dispatched' => $processedCount,\n ]);\n }\n\n if ($processedCount > 0) {\n Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'total_dispatched' => $processedCount,\n 'batches_dispatched' => $batchNumber,\n ]);\n }\n\n return $processedCount;\n }\n\n private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void\n {\n match ($objectType) {\n self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),\n self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),\n };\n }\n\n private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void\n {\n $succeeded = 0;\n $permanentlyFailed = [];\n\n foreach ($crmProviderIds as $crmProviderId) {\n try {\n $this->redisService->collectObjectIdToBatch(\n $objectType,\n $crmProviderId,\n $configId,\n 'all'\n );\n $succeeded++;\n } catch (\\Throwable $idError) {\n $permanentlyFailed[] = $crmProviderId;\n Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'crm_provider_id' => $crmProviderId,\n 'error' => $idError->getMessage(),\n ]);\n }\n }\n\n Log::info('[WebhookSyncBatchProcessor] Requeue completed', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'succeeded' => $succeeded,\n 'failed' => \\count($permanentlyFailed),\n 'total' => \\count($crmProviderIds),\n ]);\n\n if (! empty($permanentlyFailed)) {\n Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [\n 'object_type' => $objectType,\n 'config_id' => $configId,\n 'failed_ids' => $permanentlyFailed,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8010415956189026930
|
-8883631698440123185
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Illuminate\Support\Facades\Log;
use Jiminny\Jobs\Crm\Hubspot\ImportAccountBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportContactBatch;
use Jiminny\Jobs\Crm\Hubspot\ImportOpportunityBatch;
/**
* Processes batches of HubSpot objects collected from webhook events.
*
* This service drains Redis sets containing CRM IDs that were collected from webhook
* property change and association change events. It dispatches Import*Batch jobs to
* process the objects in batches of 100.
*
* Design Decisions:
*
* 1. Redis Service Injection:
* BatchSyncRedisService is injected via constructor for testability and to avoid
* tight coupling to Redis facade. This allows easy mocking in tests.
*
* 2. Multi-Object Type Support:
* processBatchesForObjectType() directly with their specific object type.
*
* 3. Batch Size and Limits:
* - BATCH_SIZE = 100: HubSpot batch API limit
* - MAX_BATCHES = 1000: Safety limit to prevent infinite loops (100K objects max per run)
*
* 4. Failure Handling:
* If job dispatch fails, IDs are requeued to Redis for the next processing cycle.
* Individual job failures are handled by the Import*Batch jobs themselves.
*/
class WebhookSyncBatchProcessor
{
public const string OBJECT_TYPE_DEAL = 'deal';
public const string OBJECT_TYPE_CONTACT = 'contact';
public const string OBJECT_TYPE_COMPANY = 'company';
private const int BATCH_SIZE = 100;
private const int MAX_BATCHES = 1000;
private const array SUPPORTED_OBJECT_TYPES = [
self::OBJECT_TYPE_DEAL,
self::OBJECT_TYPE_CONTACT,
self::OBJECT_TYPE_COMPANY,
];
public function __construct(
private BatchSyncRedisService $redisService
) {
}
/**
* Process batches for a specific object type.
*
* Drains the Redis set for the given object type and config, dispatching Import*Batch
* jobs in batches of 100 until the set is empty or MAX_BATCHES is reached.
*
* @param string $objectType One of: 'deal', 'contact', 'company'
* @param int $configId CRM configuration ID
*
* @return int Total number of IDs dispatched to jobs
*/
public function processBatchesForObjectType(string $objectType, int $configId): int
{
if (! in_array($objectType, self::SUPPORTED_OBJECT_TYPES, true)) {
Log::warning('[WebhookSyncBatchProcessor] Unsupported object type', [
'object_type' => $objectType,
'config_id' => $configId,
]);
return 0;
}
$processedCount = 0;
$batchNumber = 0;
while ($batchNumber < self::MAX_BATCHES) {
try {
$crmProviderIds = $this->redisService->getCollectedObjects(
$objectType,
$configId,
'all',
self::BATCH_SIZE
);
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Failed to fetch IDs from Redis', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'error' => $e->getMessage(),
]);
break;
}
if (empty($crmProviderIds)) {
break;
}
try {
$this->dispatchBatchJob($objectType, $configId, $crmProviderIds);
$processedCount += \count($crmProviderIds);
$batchNumber++;
} catch (\Throwable $e) {
Log::error('[WebhookSyncBatchProcessor] Batch dispatch failed, stopping', [
'object_type' => $objectType,
'config_id' => $configId,
'batch_number' => $batchNumber,
'batch_size' => \count($crmProviderIds),
'error' => $e->getMessage(),
]);
$this->requeueFailedIds($objectType, $configId, $crmProviderIds);
break;
}
}
if ($batchNumber >= self::MAX_BATCHES) {
Log::warning('[WebhookSyncBatchProcessor] Maximum batch limit reached', [
'object_type' => $objectType,
'config_id' => $configId,
'max_batches' => self::MAX_BATCHES,
'total_dispatched' => $processedCount,
]);
}
if ($processedCount > 0) {
Log::info('[WebhookSyncBatchProcessor] Batch processing completed', [
'object_type' => $objectType,
'config_id' => $configId,
'total_dispatched' => $processedCount,
'batches_dispatched' => $batchNumber,
]);
}
return $processedCount;
}
private function dispatchBatchJob(string $objectType, int $configId, array $crmProviderIds): void
{
match ($objectType) {
self::OBJECT_TYPE_DEAL => ImportOpportunityBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_CONTACT => ImportContactBatch::dispatch($configId, $crmProviderIds),
self::OBJECT_TYPE_COMPANY => ImportAccountBatch::dispatch($configId, $crmProviderIds),
};
}
private function requeueFailedIds(string $objectType, int $configId, array $crmProviderIds): void
{
$succeeded = 0;
$permanentlyFailed = [];
foreach ($crmProviderIds as $crmProviderId) {
try {
$this->redisService->collectObjectIdToBatch(
$objectType,
$crmProviderId,
$configId,
'all'
);
$succeeded++;
} catch (\Throwable $idError) {
$permanentlyFailed[] = $crmProviderId;
Log::warning('[WebhookSyncBatchProcessor] Failed to requeue ID', [
'object_type' => $objectType,
'config_id' => $configId,
'crm_provider_id' => $crmProviderId,
'error' => $idError->getMessage(),
]);
}
}
Log::info('[WebhookSyncBatchProcessor] Requeue completed', [
'object_type' => $objectType,
'config_id' => $configId,
'succeeded' => $succeeded,
'failed' => \count($permanentlyFailed),
'total' => \count($crmProviderIds),
]);
if (! empty($permanentlyFailed)) {
Log::error('[WebhookSyncBatchProcessor] Permanently failed to requeue IDs', [
'object_type' => $objectType,
'config_id' => $configId,
'failed_ids' => $permanentlyFailed,
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2873
|
116
|
1
|
2026-05-07T11:44:55.653768+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154295653_m2.jpg...
|
PhpStorm
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Inherited members (⌘R)
Anonymous Classes (⌘I)
Lamb Inherited members (⌘R)
Anonymous Classes (⌘I)
Lambdas (⌘L)
Client, class
ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public
BASE_URL: string = 'https://api.hubapi...., public
MIN_API_VERSION: string = '2' ↑BaseClient, public
paginationService: HubspotPaginationService, private
rateLimiter: ProviderRateLimiter, private
tokenManager: HubspotTokenManager, private
__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method
addAssociations(objectType: string, associationType: string, payload: array): Response, public method
batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method
createBatchConfiguration(objectType: string): array, private method
createEngagement(engagement: array, associations: array, metadata: array): Response, public method
createMeeting(payload: array): Response ↑HubspotClientInterface, public method
createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method
deleteEngagement(engagementId: string): void, public method
ensureValidToken(): void, public method
executeRequest(apiCall: callable), private method
extractMeetingTypeOptions(endpoint: string): array, private method
fetchCallActivityTypes(): array, public method
fetchCallDispositions(): array[], public method
fetchDispositionFieldOptions(): array[], public method
fetchMeetingOutcomeFieldOptions(field: Field): array[], public method
fetchMeetingOutcomeTypes(): array, public method
fetchOpportunityFieldOptions(field: Field): array[], public method
fetchOpportunityPipelines(): array, public method
fetchOpportunityPipelineStages(): array[], public method
fetchProperty(objectType: string, propertyId: string): Property, public method
fetchPropertyOptions(objectType: string, propertyId: string): array[], public method
getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method
getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getConfig(): Configuration, public method
getContactByEmail(email: string, [fields: array = [...]]): array, public method
getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method
getInstance(): Factory ↑HubspotClientInterface, public method
getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method
getMinimumApiVersion(): string ↑ClientInterface, public method
getNewInstance(): Discovery ↑HubspotClientInterface, public method
getNoteAssociationType(noteObject: NoteObject): string, private method
getNoteObject(noteObject: NoteObject): string, private method
getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getOpportunityById(crmId: string, fields: array): array, public method
getOwners(): array ↑HubspotClientInterface, public method
getOwnersArchived([archived: bool = true]): Owner[], public method
getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method
getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method
handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method
isHubspotRateLimit(e: Throwable): bool, private method
isUnauthorizedException(e: Exception): bool, public method
logBatchResults(objectType: string, crmIds: array, results: array): void, private method
makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method
parseRetryAfter(e: Throwable): int, private method
prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method
processApiResults(response): array, private method
removeAssociations(objectType: string, associationType: string, payload: array): Response, public method
updateEngagement(objectId: string, engagement: array, metadata: array): void, public method
updateMeeting(meetingId: string, payload: array): Response, public method
validateApiResponse(response, objectType: string): void, private method
validateBatchSize(objectType: string, crmIds: array): void, private method
ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public
BASE_URL: string = 'https://api.hubapi...., public
MIN_API_VERSION: string = '2' ↑BaseClient, public
paginationService: HubspotPaginationService, private
rateLimiter: ProviderRateLimiter, private
tokenManager: HubspotTokenManager, private
__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method
addAssociations(objectType: string, associationType: string, payload: array): Response, public method
batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method
createBatchConfiguration(objectType: string): array, private method
createEngagement(engagement: array, associations: array, metadata: array): Response, public method
createMeeting(payload: array): Response ↑HubspotClientInterface, public method
createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method
deleteEngagement(engagementId: string): void, public method
ensureValidToken(): void, public method
executeRequest(apiCall: callable), private method
extractMeetingTypeOptions(endpoint: string): array, private method
fetchCallActivityTypes(): array, public method
fetchCallDispositions(): array[], public method
fetchDispositionFieldOptions(): array[], public method
fetchMeetingOutcomeFieldOptions(field: Field): array[], public method
fetchMeetingOutcomeTypes(): array, public method
fetchOpportunityFieldOptions(field: Field): array[], public method
fetchOpportunityPipelines(): array, public method
fetchOpportunityPipelineStages(): array[], public method
fetchProperty(objectType: string, propertyId: string): Property, public method
fetchPropertyOptions(objectType: string, propertyId: string): array[], public method
getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method
getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getConfig(): Configuration, public method
getContactByEmail(email: string, [fields: array = [...]]): array, public method
getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method
getInstance(): Factory ↑HubspotClientInterface, public method
getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method
getMinimumApiVersion(): string ↑ClientInterface, public method
getNewInstance(): Discovery ↑HubspotClientInterface, public method
getNoteAssociationType(noteObject: NoteObject): string, private method
getNoteObject(noteObject: NoteObject): string, private method
getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getOpportunityById(crmId: string, fields: array): array, public method
getOwners(): array ↑HubspotClientInterface, public method
getOwnersArchived([archived: bool = true]): Owner[], public method
getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method
getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method
handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method
isHubspotRateLimit(e: Throwable): bool, private method
isUnauthorizedException(e: Exception): bool, public method
logBatchResults(objectType: string, crmIds: array, results: array): void, private method
makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method
parseRetryAfter(e: Throwable): int, private method
prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method
processApiResults(response): array, private method
removeAssociations(objectType: string, associationType: string, payload: array): Response, public method
updateEngagement(objectId: string, engagement: array, metadata: array): void, public method
updateMeeting(meetingId: string, payload: array): Response, public method
validateApiResponse(response, objectType: string): void, private method
validateBatchSize(objectType: string, crmIds: array): void, private method
Client.php...
|
[{"role":"AXCheckBox","text [{"role":"AXCheckBox","text":"Inherited members (⌘R)","depth":1,"bounds":{"left":0.5242686,"top":0.33998403,"width":0.052526597,"height":0.022346368},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Anonymous Classes (⌘I)","depth":1,"bounds":{"left":0.58011967,"top":0.33998403,"width":0.052526597,"height":0.022346368},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Lambdas (⌘L)","depth":1,"bounds":{"left":0.6359708,"top":0.33998403,"width":0.052526597,"height":0.022346368},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Client, class","depth":4,"bounds":{"left":0.51462764,"top":0.2753392,"width":0.019946808,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public","depth":5,"bounds":{"left":0.5209442,"top":0.29289705,"width":0.109707445,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BASE_URL: string = 'https://api.hubapi...., public","depth":5,"bounds":{"left":0.5209442,"top":0.3104549,"width":0.09607713,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MIN_API_VERSION: string = '2' ↑BaseClient, public","depth":5,"bounds":{"left":0.5209442,"top":0.32801276,"width":0.10305851,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"paginationService: HubspotPaginationService, private","depth":5,"bounds":{"left":0.5209442,"top":0.34557062,"width":0.106715426,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"rateLimiter: ProviderRateLimiter, private","depth":5,"bounds":{"left":0.5209442,"top":0.36312848,"width":0.078457445,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenManager: HubspotTokenManager, private","depth":5,"bounds":{"left":0.5209442,"top":0.38068634,"width":0.09375,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method","depth":5,"bounds":{"left":0.5209442,"top":0.3982442,"width":0.40425533,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"addAssociations(objectType: string, associationType: string, payload: array): Response, public method","depth":5,"bounds":{"left":0.5209442,"top":0.41580206,"width":0.19115691,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method","depth":5,"bounds":{"left":0.5209442,"top":0.43335995,"width":0.17154256,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createBatchConfiguration(objectType: string): array, private method","depth":5,"bounds":{"left":0.5209442,"top":0.4509178,"width":0.11934841,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createEngagement(engagement: array, associations: array, metadata: array): Response, public method","depth":5,"bounds":{"left":0.5209442,"top":0.46847567,"width":0.19182181,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createMeeting(payload: array): Response ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.48603353,"width":0.15159574,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.50359136,"width":0.28856382,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"deleteEngagement(engagementId: string): void, public method","depth":5,"bounds":{"left":0.5209442,"top":0.5211492,"width":0.109707445,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ensureValidToken(): void, public method","depth":5,"bounds":{"left":0.5209442,"top":0.5387071,"width":0.064494684,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"executeRequest(apiCall: callable), private method","depth":5,"bounds":{"left":0.5209442,"top":0.55626494,"width":0.08144947,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"extractMeetingTypeOptions(endpoint: string): array, private method","depth":5,"bounds":{"left":0.5209442,"top":0.5738228,"width":0.119015954,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchCallActivityTypes(): array, public method","depth":5,"bounds":{"left":0.5209442,"top":0.5913807,"width":0.07579787,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchCallDispositions(): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.6089386,"width":0.07579787,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchDispositionFieldOptions(): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.62649643,"width":0.09142287,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchMeetingOutcomeFieldOptions(field: Field): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.6440543,"width":0.12533244,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchMeetingOutcomeTypes(): array, public method","depth":5,"bounds":{"left":0.5209442,"top":0.66161215,"width":0.08809841,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityFieldOptions(field: Field): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.67917,"width":0.1143617,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityPipelines(): array, public method","depth":5,"bounds":{"left":0.5209442,"top":0.6967279,"width":0.08277926,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityPipelineStages(): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.71428573,"width":0.09773936,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchProperty(objectType: string, propertyId: string): Property, public method","depth":5,"bounds":{"left":0.5209442,"top":0.7318436,"width":0.13996011,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"fetchPropertyOptions(objectType: string, propertyId: string): array[], public method","depth":5,"bounds":{"left":0.5209442,"top":0.74940145,"width":0.15192819,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.7669593,"width":0.16788563,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.78451717,"width":0.21775267,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.802075,"width":0.1888298,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getConfig(): Configuration, public method","depth":5,"bounds":{"left":0.5209442,"top":0.8196329,"width":0.066821806,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactByEmail(email: string, [fields: array = [...]]): array, public method","depth":5,"bounds":{"left":0.5209442,"top":0.83719075,"width":0.1349734,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.8547486,"width":0.16722074,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.87230647,"width":0.18450798,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.8898643,"width":0.16855054,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getInstance(): Factory ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.9074222,"width":0.11236702,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method","depth":5,"bounds":{"left":0.5209442,"top":0.92498004,"width":0.16057181,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getMinimumApiVersion(): string ↑ClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.9425379,"width":0.11402926,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNewInstance(): Discovery ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":0.96009576,"width":0.1263298,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNoteAssociationType(noteObject: NoteObject): string, private method","depth":5,"bounds":{"left":0.5209442,"top":0.9776536,"width":0.12965426,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNoteObject(noteObject: NoteObject): string, private method","depth":5,"bounds":{"left":0.5209442,"top":0.9952115,"width":0.109375,"height":0.004788518},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":1.0,"width":0.19381648,"height":-0.0127693415},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOpportunityById(crmId: string, fields: array): array, public method","depth":5,"bounds":{"left":0.5209442,"top":1.0,"width":0.12167553,"height":-0.0303272},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOwners(): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":1.0,"width":0.10571808,"height":-0.04788506},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOwnersArchived([archived: bool = true]): Owner[], public method","depth":5,"bounds":{"left":0.5209442,"top":1.0,"width":0.12167553,"height":-0.06544292},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method","depth":5,"bounds":{"left":0.5209442,"top":1.0,"width":0.20777926,"height":-0.08300078},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"isHubspotRateLimit(e: Throwable): bool, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"isUnauthorizedException(e: Exception): bool, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"logBatchResults(objectType: string, crmIds: array, results: array): void, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"parseRetryAfter(e: Throwable): int, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processApiResults(response): array, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"removeAssociations(objectType: string, associationType: string, payload: array): Response, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updateEngagement(objectId: string, engagement: array, metadata: array): void, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updateMeeting(meetingId: string, payload: array): Response, public method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"validateApiResponse(response, objectType: string): void, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"validateBatchSize(objectType: string, crmIds: array): void, private method","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public","depth":4,"bounds":{"left":0.5209442,"top":0.29289705,"width":0.109707445,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BASE_URL: string = 'https://api.hubapi...., public","depth":4,"bounds":{"left":0.5209442,"top":0.3104549,"width":0.09607713,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MIN_API_VERSION: string = '2' ↑BaseClient, public","depth":4,"bounds":{"left":0.5209442,"top":0.32801276,"width":0.10305851,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"paginationService: HubspotPaginationService, private","depth":4,"bounds":{"left":0.5209442,"top":0.34557062,"width":0.106715426,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"rateLimiter: ProviderRateLimiter, private","depth":4,"bounds":{"left":0.5209442,"top":0.36312848,"width":0.078457445,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tokenManager: HubspotTokenManager, private","depth":4,"bounds":{"left":0.5209442,"top":0.38068634,"width":0.09375,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method","depth":4,"bounds":{"left":0.5209442,"top":0.3982442,"width":0.40425533,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"addAssociations(objectType: string, associationType: string, payload: array): Response, public method","depth":4,"bounds":{"left":0.5209442,"top":0.41580206,"width":0.19115691,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method","depth":4,"bounds":{"left":0.5209442,"top":0.43335995,"width":0.17154256,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createBatchConfiguration(objectType: string): array, private method","depth":4,"bounds":{"left":0.5209442,"top":0.4509178,"width":0.11934841,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createEngagement(engagement: array, associations: array, metadata: array): Response, public method","depth":4,"bounds":{"left":0.5209442,"top":0.46847567,"width":0.19182181,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createMeeting(payload: array): Response ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.48603353,"width":0.15159574,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.50359136,"width":0.28856382,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"deleteEngagement(engagementId: string): void, public method","depth":4,"bounds":{"left":0.5209442,"top":0.5211492,"width":0.109707445,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ensureValidToken(): void, public method","depth":4,"bounds":{"left":0.5209442,"top":0.5387071,"width":0.064494684,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"executeRequest(apiCall: callable), private method","depth":4,"bounds":{"left":0.5209442,"top":0.55626494,"width":0.08144947,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"extractMeetingTypeOptions(endpoint: string): array, private method","depth":4,"bounds":{"left":0.5209442,"top":0.5738228,"width":0.119015954,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchCallActivityTypes(): array, public method","depth":4,"bounds":{"left":0.5209442,"top":0.5913807,"width":0.07579787,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchCallDispositions(): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.6089386,"width":0.07579787,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchDispositionFieldOptions(): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.62649643,"width":0.09142287,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchMeetingOutcomeFieldOptions(field: Field): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.6440543,"width":0.12533244,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchMeetingOutcomeTypes(): array, public method","depth":4,"bounds":{"left":0.5209442,"top":0.66161215,"width":0.08809841,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityFieldOptions(field: Field): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.67917,"width":0.1143617,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityPipelines(): array, public method","depth":4,"bounds":{"left":0.5209442,"top":0.6967279,"width":0.08277926,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchOpportunityPipelineStages(): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.71428573,"width":0.09773936,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"fetchProperty(objectType: string, propertyId: string): Property, public method","depth":4,"bounds":{"left":0.5209442,"top":0.7318436,"width":0.13996011,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"fetchPropertyOptions(objectType: string, propertyId: string): array[], public method","depth":4,"bounds":{"left":0.5209442,"top":0.74940145,"width":0.15192819,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.7669593,"width":0.16788563,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.78451717,"width":0.21775267,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.802075,"width":0.1888298,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getConfig(): Configuration, public method","depth":4,"bounds":{"left":0.5209442,"top":0.8196329,"width":0.066821806,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactByEmail(email: string, [fields: array = [...]]): array, public method","depth":4,"bounds":{"left":0.5209442,"top":0.83719075,"width":0.1349734,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.8547486,"width":0.16722074,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.87230647,"width":0.18450798,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.8898643,"width":0.16855054,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getInstance(): Factory ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.9074222,"width":0.11236702,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method","depth":4,"bounds":{"left":0.5209442,"top":0.92498004,"width":0.16057181,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getMinimumApiVersion(): string ↑ClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.9425379,"width":0.11402926,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNewInstance(): Discovery ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":0.96009576,"width":0.1263298,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNoteAssociationType(noteObject: NoteObject): string, private method","depth":4,"bounds":{"left":0.5209442,"top":0.9776536,"width":0.12965426,"height":0.017557861},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getNoteObject(noteObject: NoteObject): string, private method","depth":4,"bounds":{"left":0.5209442,"top":0.9952115,"width":0.109375,"height":0.004788518},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":1.0,"width":0.19381648,"height":-0.0127693415},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOpportunityById(crmId: string, fields: array): array, public method","depth":4,"bounds":{"left":0.5209442,"top":1.0,"width":0.12167553,"height":-0.0303272},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOwners(): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":1.0,"width":0.10571808,"height":-0.04788506},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getOwnersArchived([archived: bool = true]): Owner[], public method","depth":4,"bounds":{"left":0.5209442,"top":1.0,"width":0.12167553,"height":-0.06544292},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method","depth":4,"bounds":{"left":0.5209442,"top":1.0,"width":0.20777926,"height":-0.08300078},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"isHubspotRateLimit(e: Throwable): bool, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"isUnauthorizedException(e: Exception): bool, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"logBatchResults(objectType: string, crmIds: array, results: array): void, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"parseRetryAfter(e: Throwable): int, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processApiResults(response): array, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"removeAssociations(objectType: string, associationType: string, payload: array): Response, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updateEngagement(objectId: string, engagement: array, metadata: array): void, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updateMeeting(meetingId: string, payload: array): Response, public method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"validateApiResponse(response, objectType: string): void, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"validateBatchSize(objectType: string, crmIds: array): void, private method","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Client.php","depth":1,"bounds":{"left":0.5242686,"top":0.31364724,"width":0.19980054,"height":0.026336791},"on_screen":true,"role_description":"text"}]...
|
8179037214445392322
|
7502678635301665467
|
visual_change
|
accessibility
|
NULL
|
Inherited members (⌘R)
Anonymous Classes (⌘I)
Lamb Inherited members (⌘R)
Anonymous Classes (⌘I)
Lambdas (⌘L)
Client, class
ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public
BASE_URL: string = 'https://api.hubapi...., public
MIN_API_VERSION: string = '2' ↑BaseClient, public
paginationService: HubspotPaginationService, private
rateLimiter: ProviderRateLimiter, private
tokenManager: HubspotTokenManager, private
__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method
addAssociations(objectType: string, associationType: string, payload: array): Response, public method
batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method
createBatchConfiguration(objectType: string): array, private method
createEngagement(engagement: array, associations: array, metadata: array): Response, public method
createMeeting(payload: array): Response ↑HubspotClientInterface, public method
createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method
deleteEngagement(engagementId: string): void, public method
ensureValidToken(): void, public method
executeRequest(apiCall: callable), private method
extractMeetingTypeOptions(endpoint: string): array, private method
fetchCallActivityTypes(): array, public method
fetchCallDispositions(): array[], public method
fetchDispositionFieldOptions(): array[], public method
fetchMeetingOutcomeFieldOptions(field: Field): array[], public method
fetchMeetingOutcomeTypes(): array, public method
fetchOpportunityFieldOptions(field: Field): array[], public method
fetchOpportunityPipelines(): array, public method
fetchOpportunityPipelineStages(): array[], public method
fetchProperty(objectType: string, propertyId: string): Property, public method
fetchPropertyOptions(objectType: string, propertyId: string): array[], public method
getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method
getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getConfig(): Configuration, public method
getContactByEmail(email: string, [fields: array = [...]]): array, public method
getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method
getInstance(): Factory ↑HubspotClientInterface, public method
getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method
getMinimumApiVersion(): string ↑ClientInterface, public method
getNewInstance(): Discovery ↑HubspotClientInterface, public method
getNoteAssociationType(noteObject: NoteObject): string, private method
getNoteObject(noteObject: NoteObject): string, private method
getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getOpportunityById(crmId: string, fields: array): array, public method
getOwners(): array ↑HubspotClientInterface, public method
getOwnersArchived([archived: bool = true]): Owner[], public method
getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method
getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method
handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method
isHubspotRateLimit(e: Throwable): bool, private method
isUnauthorizedException(e: Exception): bool, public method
logBatchResults(objectType: string, crmIds: array, results: array): void, private method
makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method
parseRetryAfter(e: Throwable): int, private method
prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method
processApiResults(response): array, private method
removeAssociations(objectType: string, associationType: string, payload: array): Response, public method
updateEngagement(objectId: string, engagement: array, metadata: array): void, public method
updateMeeting(meetingId: string, payload: array): Response, public method
validateApiResponse(response, objectType: string): void, private method
validateBatchSize(objectType: string, crmIds: array): void, private method
ASSOCIATIONS_BATCH_SIZE_LIMIT: int = 1000, public
BASE_URL: string = 'https://api.hubapi...., public
MIN_API_VERSION: string = '2' ↑BaseClient, public
paginationService: HubspotPaginationService, private
rateLimiter: ProviderRateLimiter, private
tokenManager: HubspotTokenManager, private
__construct(socialAccountService: SocialAccountService, paginationService: HubspotPaginationService, tokenManager: HubspotTokenManager, rateLimiter: ProviderRateLimiter) ↑BaseClient, public method
addAssociations(objectType: string, associationType: string, payload: array): Response, public method
batchReadObjects(objectType: string, crmIds: string[], fields: string[]): array[], private method
createBatchConfiguration(objectType: string): array, private method
createEngagement(engagement: array, associations: array, metadata: array): Response, public method
createMeeting(payload: array): Response ↑HubspotClientInterface, public method
createNote(body: string, ownerId: string, timestamp: int, objectId: string, noteObject: NoteObject): null|string ↑HubspotClientInterface, public method
deleteEngagement(engagementId: string): void, public method
ensureValidToken(): void, public method
executeRequest(apiCall: callable), private method
extractMeetingTypeOptions(endpoint: string): array, private method
fetchCallActivityTypes(): array, public method
fetchCallDispositions(): array[], public method
fetchDispositionFieldOptions(): array[], public method
fetchMeetingOutcomeFieldOptions(field: Field): array[], public method
fetchMeetingOutcomeTypes(): array, public method
fetchOpportunityFieldOptions(field: Field): array[], public method
fetchOpportunityPipelines(): array, public method
fetchOpportunityPipelineStages(): array[], public method
fetchProperty(objectType: string, propertyId: string): Property, public method
fetchPropertyOptions(objectType: string, propertyId: string): array[], public method
getAccountById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getAssociationsData(ids: array, fromObject: string, toObject: string): array ↑HubspotClientInterface, public method
getCompaniesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getConfig(): Configuration, public method
getContactByEmail(email: string, [fields: array = [...]]): array, public method
getContactById(crmId: string, fields: array): array ↑HubspotClientInterface, public method
getContactsByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getEngagementData(engagementId: string): array ↑HubspotClientInterface, public method
getInstance(): Factory ↑HubspotClientInterface, public method
getMeeting(engagementId: string): SimplePublicObjectWithAssociations, public method
getMinimumApiVersion(): string ↑ClientInterface, public method
getNewInstance(): Discovery ↑HubspotClientInterface, public method
getNoteAssociationType(noteObject: NoteObject): string, private method
getNoteObject(noteObject: NoteObject): string, private method
getOpportunitiesByIds(crmIds: string[], fields: string[]): array[] ↑HubspotClientInterface, public method
getOpportunityById(crmId: string, fields: array): array, public method
getOwners(): array ↑HubspotClientInterface, public method
getOwnersArchived([archived: bool = true]): Owner[], public method
getPaginatedData(payload: array, type: string, [offset: int = 0]): array ↑HubspotClientInterface, public method
getPaginatedDataGenerator(payload: array, type: string, [offset: int = 0], [&total: int = 0], [&lastRecordId: null|string = null]): Generator ↑HubspotClientInterface, public method
handleBatchError(e: Throwable, objectType: string, crmIds: array): void, private method
isHubspotRateLimit(e: Throwable): bool, private method
isUnauthorizedException(e: Exception): bool, public method
logBatchResults(objectType: string, crmIds: array, results: array): void, private method
makeRequest(endpoint: string, [method: string = 'GET'], [payload: array = [...]], [queryString: null|string = null]): null|ResponseInterface|Response, public method
parseRetryAfter(e: Throwable): int, private method
prepareBatchRequest(batchConfig: array, crmIds: array, fields: array): mixed|object, private method
processApiResults(response): array, private method
removeAssociations(objectType: string, associationType: string, payload: array): Response, public method
updateEngagement(objectId: string, engagement: array, metadata: array): void, public method
updateMeeting(meetingId: string, payload: array): Response, public method
validateApiResponse(response, objectType: string): void, private method
validateBatchSize(objectType: string, crmIds: array): void, private method
Client.php...
|
2870
|
NULL
|
NULL
|
NULL
|
|
2876
|
115
|
1
|
2026-05-07T11:45:33.324512+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154333324_m1.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7357289762196789584
|
-8132368178556597310
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0lihoSupport Daily - in 15 m100% <478DEV (docker)DOCKERDEV (docker)882APP (-zsh)-zshjiminny-worker-processing-4:j1minny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedartisan-schedule:artisan-schedule_00:stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00:startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --from='2026-05-01 00:00:00'Syncing opportunity for HubspotSyncing opportunities modified since 2026-05-01 00:00:00...Synced 6 opportunities.root@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --opportunityId 374720564Syncing opportunity for HubspotSyncing opportunity 374720564...Synced AmirHSOpp to 5066root@docker_lamp_1:/home/jiminny# php artisan crm: sync-contact --teamId=2 --contactId 21351Syncing contact(s) for HubspotSyncing contact 21351...Synced Lissy Newlandto 464root@docker_lamp_1:/home/jiminny# ]• $4screenpipe"•$5-zshThu 7 May 14:45:33T81₴6DEV...
|
2868
|
NULL
|
NULL
|
NULL
|
|
2918
|
117
|
1
|
2026-05-07T11:50:12.356696+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154612356_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"}]...
|
-2634836502652893024
|
-5616833896565352356
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited...
|
2916
|
NULL
|
NULL
|
NULL
|
|
2919
|
118
|
1
|
2026-05-07T11:50:12.261313+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154612261_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"}]...
|
6839085303503348190
|
1877155887674383452
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions...
|
2917
|
NULL
|
NULL
|
NULL
|
|
2985
|
119
|
1
|
2026-05-07T11:55:07.759097+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154907759_m1.jpg...
|
PhpStorm
|
faVsco.js – OpportunitySyncTrait.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
34
2
22
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use HubSpot\Client\Crm\Deals\Model\CollectionResponseAssociatedId;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Models\Account;
use Exception;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Jobs\Crm\MatchActivitiesToNewOpportunity;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\BusinessProcess;
use Jiminny\Exceptions\CrmException;
use Jiminny\Models\Opportunity;
use Illuminate\Support\Collection;
use Jiminny\Models\Stage;
use Jiminny\Repositories\Crm\CrmEntityRepository;
use Jiminny\Services\Crm\Hubspot\DealFieldsService;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\HubspotSingleSyncStrategy;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
use Jiminny\Services\Crm\OpportunitySyncStrategyResolver;
use Jiminny\Utils\CurrencyFormatter;
/**
* Optimized sync methods for better performance
* These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains
*/
trait OpportunitySyncTrait
{
private const int BATCH_SIZE = 100;
private const int BATCH_PROCESS_SIZE = 800;
protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;
protected CrmEntityRepository $crmEntityRepository;
protected DealFieldsService $dealFieldsService;
private ?array $cachedClosedDealStages = null;
private array $cachedBusinessProcesses = [];
private array $cachedStages = [];
/** @var array<string, array<string>> keyed by config id */
private array $cachedOpportunitySyncableFields = [];
/** @var array<string, mixed> keyed by configId:ownerId */
private array $cachedOwnerProfiles = [];
/** @var array<string, mixed> keyed by configId:businessProcessId */
private array $cachedRecordTypes = [];
public function syncOpportunities(array $parameters, ?string $strategy = null): int
{
$startTime = microtime(true);
$strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);
$parameters['config'] = $this->config;
$syncCount = 0;
$reportedTotal = 0;
$lastSyncedId = [];
$strategyNames = [];
try {
foreach ($strategies as $strategyName => $syncStrategy) {
$strategyNames[] = $strategyName;
$this->logger->info(
'[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,
['team' => $this->team->getId()]
);
$total = 0;
$lastId = null;
$buffer = [];
// HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies
foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {
$buffer[] = $hsOpportunity;
// process every 800 rows (fits < 1 000 association limit)
if (\count($buffer) >= self::BATCH_PROCESS_SIZE) {
$syncCount += $this->processOpportunityBatch($buffer);
$buffer = [];
}
}
// leftovers
if ($buffer) {
$syncCount += $this->processOpportunityBatch($buffer);
}
$reportedTotal += $total;
$lastSyncedId = $lastId;
}
} catch (\HubSpot\Client\Crm\Deals\ApiException | CrmException $e) {
$this->handleSyncException($e, $parameters);
}
$durationMs = round((microtime(true) - $startTime) * 1000, 2);
$this->logger->info(
'[HubSpot] Synced opportunities',
[
'team' => $this->team->getId(),
'strategies' => implode(',', $strategyNames),
'sync_count' => $syncCount,
'total' => $reportedTotal,
'last_synced_id' => $lastSyncedId,
'duration_ms' => $durationMs,
]
);
return $reportedTotal;
}
private function handleSyncException(\Throwable $e, array $parameters): void
{
if (($parameters['since'] ?? null) instanceof Carbon) {
$parameters['since'] = $parameters['since']->toDateTimeString();
}
$parameters['config'] = $this->config->getId();
$this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [
'teamId' => $this->team->getUuid(),
'parameters' => $parameters,
'reason' => $e->getMessage(),
]);
}
/**
* @inheritdoc
*/
public function syncOpportunity(string $crmId): ?Opportunity
{
$this->client->getOpportunityById($params['crm_id'], $fields);;
$strategy = $this->opportunitySyncStrategyResolver->resolve(
$this->config,
OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,
);
$parameters = [
'config' => $this->config,
'crm_id' => $crmId,
];
try {
if (! $strategy instanceof HubspotSingleSyncStrategy) {
throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');
}
$hsOpportunity = $strategy->fetchOpportunity($parameters);
} catch (\HubSpot\Client\Crm\Deals\ApiException $e) {
$this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [
'teamId' => $this->team->getUuid(),
'crmId' => $crmId,
'reason' => $e->getMessage(),
]);
return null;
}
$hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);
return $this->importOrUpdateOpportunity($hsOpportunity);
}
/**
* Process webhook-collected opportunity batches.
*
* Drains Redis sets containing company CRM IDs collected from webhook events
* and dispatches ImportOpportunityBatch jobs for batch processing.
*
* @return int Number of opportunity IDs dispatched to jobs
*/
public function batchSyncOpportunities(): int
{
$configId = $this->team->getCrmConfiguration()->getId();
return $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
}
/**
* Import a batch of opportunities by their CRM IDs.
* Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().
*
* @param array<string> $crmIds HubSpot deal CRM IDs
*
* @return array{success: array, failed_ids: array, errors?: array<string, string>}
*/
public function importOpportunityBatchByIds(array $crmIds): array
{
$fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);
$allDeals = [];
foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {
$deals = $this->client->getOpportunitiesByIds($chunk, $fields);
foreach ($deals as $deal) {
$allDeals[] = $deal;
}
}
// IDs not returned by HubSpot are likely deleted or inaccessible deals.
// These are not failures — retrying won't bring them back.
$fetchedIds = array_map('strval', array_column($allDeals, 'id'));
$notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));
if (! empty($notFoundIds)) {
$this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [
'teamId' => $this->team->getId(),
'notFoundCount' => \count($notFoundIds),
'notFoundIds' => $notFoundIds,
'requestedCount' => \count($crmIds),
'fetchedCount' => \count($allDeals),
]);
}
if (empty($allDeals)) {
return ['success' => [], 'failed_ids' => []];
}
return $this->importOpportunityBatch($allDeals);
}
private function getClosedDealStages(): array
{
if ($this->cachedClosedDealStages !== null) {
return $this->cachedClosedDealStages;
}
$stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);
$data = [
'lost' => [],
'won' => [],
];
foreach ($stages as $stage) {
if ($stage->probability == 0.00) {
$data['lost'][] = $stage->crm_provider_id;
}
if ($stage->probability == 100.00) {
$data['won'][] = $stage->crm_provider_id;
}
}
$this->cachedClosedDealStages = $data;
return $data;
}
/**
* Import deals into the database with pre-fetched associations.
*
* API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT
* caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()
* where Laravel retries the whole job with backoff. After all retries exhausted,
* failed() requeues all IDs to Redis.
*
* The per-deal loop catches exceptions individually. A deal can end up in three states:
* - success: imported/updated successfully
* - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)
* These are permanent issues — retrying won't fix them.
* - skipped (null): missing dependencies (no account, unknown pipeline/stage).
* This is acceptable — the deal cannot be imported until those exist.
*/
private function importOpportunityBatch(array $deals): array
{
$syncedOpportunities = [
'success' => [],
'failed_ids' => [],
];
$dealIds = array_column($deals, 'id');
$batchStart = microtime(true);
$slowDeals = [];
// Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the
// queue job retries the whole batch and eventually requeues all deal IDs back to Redis.
try {
$companyAssocStart = microtime(true);
$companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');
$companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);
$contactAssocStart = microtime(true);
$contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');
$contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);
$prepareStart = microtime(true);
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
$prepareTimings = [];
$associationsData = $this->prepareAssociatedEntities(
$companyAssociations,
$contactAssociations,
$prepareTimings
);
$prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);
$missingCompanies = count(array_diff(
$allCompanyIds,
array_keys($associationsData['company_id_mappings'] ?? [])
));
$missingContacts = count(array_diff(
$allContactIds,
array_keys($associationsData['contact_id_mappings'] ?? [])
));
$existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(
$this->config,
array_map('strval', $dealIds)
);
$existingCrmIdSet = array_flip($existingCrmIds);
} catch (\Throwable $e) {
$this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [
'teamId' => $this->team->getId(),
'dealCount' => count($dealIds),
'error' => $e->getMessage(),
]);
throw $e;
}
$loopStart = microtime(true);
foreach ($deals as $deal) {
$dealStart = microtime(true);
try {
$deal['associations'] = $this->prepareAssociationsForOpportunity(
$deal['id'],
$companyAssociations,
$contactAssociations,
$associationsData
);
$syncedOpportunity = $this->importOrUpdateOpportunity(
$deal,
isset($existingCrmIdSet[(string) $deal['id']])
);
if ($syncedOpportunity) {
$syncedOpportunities['success'][] = $syncedOpportunity;
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [
'teamId' => $this->team->getId(),
'crmId' => $deal['id'],
'error' => $e->getMessage(),
]);
$syncedOpportunities['failed_ids'][] = $deal['id'];
$syncedOpportunities['errors'][$deal['id']] = $e->getMessage();
}
$dealMs = (int) round((microtime(true) - $dealStart) * 1000);
if ($dealMs > 1000) {
$slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];
}
}
$loopMs = (int) round((microtime(true) - $loopStart) * 1000);
$totalMs = (int) round((microtime(true) - $batchStart) * 1000);
$this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [
'teamId' => $this->team->getId(),
'deal_count' => count($deals),
'total_ms' => $totalMs,
'company_assoc_api_ms' => $companyAssocMs,
'contact_assoc_api_ms' => $contactAssocMs,
'prepare_entities_ms' => $prepareMs,
'prepare_accounts_ms' => $prepareTimings['accounts_ms'],
'prepare_contacts_ms' => $prepareTimings['contacts_ms'],
'total_companies' => count($allCompanyIds),
'missing_companies' => $missingCompanies,
'total_contacts' => count($allContactIds),
'missing_contacts' => $missingContacts,
'deals_loop_ms' => $loopMs,
'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,
'slow_deals_count' => count($slowDeals),
'slow_deals' => array_slice($slowDeals, 0, 10),
]);
return $syncedOpportunities;
}
/**
* Prepare associated entities for opportunities with optimized batch processing
* Returns structured data with CRM ID to DB ID mappings for each opportunity
*/
private function prepareAssociatedEntities(
array $companyAssociations,
array $contactAssociations,
array &$timings = []
): array {
// Step 1: Collect all unique company and contact IDs from associations
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
// Step 2: Batch sync missing entities and get CRM ID to DB ID mappings
$companyIdMappings = [];
$contactIdMappings = [];
$accountsMs = 0;
$contactsMs = 0;
if (! empty($allCompanyIds)) {
$start = microtime(true);
$companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);
$accountsMs = (int) round((microtime(true) - $start) * 1000);
}
if (! empty($allContactIds)) {
$start = microtime(true);
$contactIdMappings = $this->prepareAssociatedContacts($allContactIds);
$contactsMs = (int) round((microtime(true) - $start) * 1000);
}
$timings = [
'accounts_ms' => $accountsMs,
'contacts_ms' => $contactsMs,
];
return [
'company_id_mappings' => $companyIdMappings,
'contact_id_mappings' => $contactIdMappings,
];
}
/**
* Flatten association data to get unique IDs
*/
private function flattenAssociationIds(array $associations): array
{
$ids = [];
foreach ($associations as $dealAssociations) {
if (is_array($dealAssociations)) {
foreach ($dealAssociations as $id) {
$ids[$id] = true;
}
}
}
return array_keys($ids);
}
/**
* Batch sync missing accounts
*/
private function prepareAssociatedAccounts(array $companyIds): array
{
// Find which accounts already exist (lean covering-index lookup)
$existingAccountsData = $this->crmEntityRepository
->getExistingAccountIdsMap($this->config, $companyIds);
$missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));
if (empty($missingCompanyIds)) {
return $existingAccountsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [
'teamId' => $this->team->getUuid(),
'total_companies' => count($companyIds),
'existing_companies' => count($existingAccountsData),
'missing_companies' => count($missingCompanyIds),
]);
// we already have limit on opportunity ids count
// Initialize variable before try block
$syncedAccountsData = [];
try {
$syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [
'size' => count($missingCompanyIds),
'error' => $e->getMessage(),
]);
$syncedAccountsData = [];
}
return $existingAccountsData + $syncedAccountsData;
}
/**
* Prepare associated contacts - find existing and sync missing ones
* Returns mapping of CRM ID to DB ID
*/
private function prepareAssociatedContacts(array $contactIds): array
{
// Find which contacts already exist (lean covering-index lookup)
$existingContactsData = $this->crmEntityRepository
->getExistingContactIdsMap($this->config, $contactIds);
$missingContactIds = array_diff($contactIds, array_keys($existingContactsData));
if (empty($missingContactIds)) {
return $existingContactsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [
'teamId' => $this->team->getUuid(),
'total_contacts' => count($contactIds),
'existing_contacts' => count($existingContactsData),
'missing_contacts' => count($missingContactIds),
]);
// Sync missing contacts using batch API
try {
$syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [
'size' => count($missingContactIds),
'error' => $e->getMessage(),
]);
$syncedContactsData = [];
}
return $existingContactsData + $syncedContactsData;
}
private function batchSyncCrmObjects(string $objectType, array $crmIds): array
{
$syncObjects = [];
$crmObjectIds = array_values($crmIds);
foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {
try {
$objects = $objectType === 'companies' ?
$this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :
$this->client->getContactsByIds($chunk, $this->getContactFields());
foreach ($objects as $objectId => $objectData) {
$this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [
'requested_count' => count($chunk),
'synced_count' => count($objects),
]);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [
'ids' => $chunk,
'error' => $e->getMessage(),
]);
}
}
return $syncObjects;
}
private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void
{
try {
$object = $objectType === 'companies' ?
$this->importAccount($objectData) :
$this->importContact($objectData);
if ($object) {
$syncObjects[$object->getCrmProviderId()] = $object->getId();
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [
'id' => $objectId,
'error' => $e->getMessage(),
]);
}
}
/**
* Prepare associations for a single opportunity
*
* The return value is an array with the following structure:
* [
* 'companies' => [
* $companyCrmId => $companyId,
* ...
* ],
* 'contacts' => [
* $contactCrmId => $contactId,
* ...
* ],
* 'account_id' => $accountId,
* ]
*/
private function prepareAssociationsForOpportunity(
string $oppCrmId,
array $companyAssociations,
array $contactAssociations,
array $associationsData
): array {
$associations = [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
$oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];
foreach ($oppCompanyIds as $companyCrmId) {
if (isset($associationsData['company_id_mappings'][$companyCrmId])) {
$associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];
// Set primary account (first company becomes primary account)
if ($associations['account_id'] === null) {
$associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];
}
}
}
$oppContactIds = $contactAssociations[$oppCrmId] ?? [];
foreach ($oppContactIds as $contactCrmId) {
if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {
$associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];
}
}
return $associations;
}
/**
* Update only associations for an opportunity
*/
private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void
{
// Update contact associations
$this->importOpportunityContacts($opportunity, $associations['contacts']);
// Update company (account) associations
$this->updateOpportunityAccount($opportunity, $associations['account_id']);
}
/**
* Remove all contact associations from an opportunity
*/
private function removeAllOpportunityContacts(Opportunity $opportunity): void
{
$currentCount = (int) $opportunity->contacts()->count();
if ($currentCount > 0) {
$opportunity->contacts()->detach();
$this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_count' => $currentCount,
]);
}
}
private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void
{
if ($accountId === null) {
// No account ID provided - keep current account
return;
}
$currentAccountId = $opportunity->getAccountId();
// Only update if account has changed
if ($currentAccountId !== $accountId) {
$opportunity->account_id = $accountId;
$opportunity->save();
$this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [
'opportunity_id' => $opportunity->getId(),
'old_account_id' => $currentAccountId,
'new_account_id' => $accountId,
]);
}
}
/**
* Find existing opportunities by external IDs (OPTIMIZED VERSION)
* Uses batch query for better performance
*/
private function findExistingOpportunities(array $crmIds): Collection
{
return $this->crmEntityRepository
->findOpportunitiesByExternalIds($this->config, $crmIds);
}
private function processOpportunityBatch(array $opportunities): int
{
$syncedOpportunities = $this->importOpportunityBatch($opportunities);
return count($syncedOpportunities['success'] ?? []);
}
/**
* Convert single deal associations from HubSpot format to internal format
* Handles both HubSpot SDK objects and array formats
*
* @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed
*
* @return array Processed associations with DB IDs
*/
private function convertDealAssociations(array $opportunityAssociations): array
{
$associations = $this->initializeAssociationsStructure();
if (empty($opportunityAssociations)) {
return $associations;
}
$associationIds = $this->extractAssociationIds($opportunityAssociations);
$this->processCompanyAssociations($associationIds, $associations);
$this->processContactAssociations($associationIds, $associations);
return $associations;
}
private function initializeAssociationsStructure(): array
{
return [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
}
private function extractAssociationIds(array $opportunityAssociations): array
{
$associationIds = [];
foreach ($opportunityAssociations as $type => $associationData) {
if (! empty($associationData)) {
$associationIds[$type] = $this->convertSingleDealAssociations($associationData);
}
}
return $associationIds;
}
private function processCompanyAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['companies'])) {
return;
}
$companyId = $associationIds['companies'][0];
$account = $this->findOrSyncAccount($companyId);
if ($account instanceof Account) {
$associations['companies'][$companyId] = $account->getId();
$associations['account_id'] = $account->getId();
}
}
private function processContactAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['contacts'])) {
return;
}
foreach ($associationIds['contacts'] as $contactId) {
$contact = $this->findOrSyncContact($contactId);
if ($contact instanceof Contact) {
$associations['contacts'][$contactId] = $contact->getId();
}
}
}
private function findOrSyncAccount(string $companyId): ?Account
{
$account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);
if (! $account instanceof Account) {
$account = $this->syncAccount($companyId);
}
return $account;
}
private function findOrSyncContact(string $contactId): ?Contact
{
$contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);
if (! $contact instanceof Contact) {
$contact = $this->syncContact($contactId);
}
return $contact;
}
private function convertSingleDealAssociations($opportunityAssociations = null): array
{
$associationData = [];
if ($opportunityAssociations === null) {
return $associationData;
}
// Handle array input (from extractAssociationIds)
if (is_array($opportunityAssociations)) {
return $opportunityAssociations;
}
// Handle CollectionResponseAssociatedId object
if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {
foreach ($opportunityAssociations->getResults() as $association) {
$associationData[] = $association->getId();
}
}
return $associationData;
}
private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity
{
if (empty($crmData['properties'])) {
return null;
}
$crmId = (string) $crmData['id'];
$properties = $crmData['properties'];
$associations = $crmData['associations'] ?? [];
$opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(
$this->config,
$crmId
);
if ($opportunityExists) {
return $this->updateOpportunity($crmId, $properties, $associations);
}
return $this->createOpportunity($crmId, $properties, $associations);
}
/**
* Create new opportunity
*/
private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity
{
$accountId = $this->resolveAccountId($associations);
if (! $accountId) {
return null;
}
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
if (! $businessProcess) {
return null;
}
$stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);
if (! $stage) {
return null;
}
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->importOpportunityContacts($opportunity, $associations['contacts']);
if ($opportunity->wasRecentlyCreated) {
MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());
}
return $opportunity;
}
/**
* Update existing opportunity
*/
private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity
{
$accountId = $this->resolveAccountId($associations);
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->updateOpportunityAssociations($opportunity, $associations);
return $opportunity;
}
private function resolveAccountId(array $associations): ?int
{
if (! empty($associations['account_id'])) {
return $associations['account_id'];
}
if (empty($associations)) {
return null;
}
// Fallback: use first company as account (currently SDK returns one company)
foreach ($associations['companies'] as $accountId) {
return $accountId;
}
return null;
}
private function buildOpportunityData(
array $properties,
?int $accountId,
?BusinessProcess $businessProcess,
?Stage $stage
): array {
$ownerId = null;
$profile = null;
if (! empty($properties['hubspot_owner_id'])) {
$ownerId = $properties['hubspot_owner_id'];
$profile = $this->getCachedOwnerProfile((string) $ownerId);
}
$name = 'Unknown';
if (isset($properties['dealname'])) {
$name = mb_strimwidth($properties['dealname'], 0, 128);
}
$amount = $this->resolveAmount($properties);
$currency = $properties['deal_currency_code'] ?? null;
$closeDate = null;
if (! empty($properties['closedate'])) {
$closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');
}
$remotelyCreatedAt = null;
if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {
$date = $this->parseCleanDatetime($properties['createdate']);
$remotelyCreatedAt = $date?->format('Y-m-d H:i:s');
}
$closedStages = $this->getClosedDealStages();
$isWon = in_array($properties['dealstage'], $closedStages['won']);
$isLost = in_array($properties['dealstage'], $closedStages['lost']);
$data = [
'team_id' => $this->team->getId(),
'user_id' => $profile ? $profile->user_id : null,
'owner_id' => $ownerId,
'name' => $name,
'value' => ! empty($amount) ? $amount : null,
'currency_code' => CurrencyFormatter::formatCode($currency),
'close_date' => $closeDate,
'is_closed' => $isWon || $isLost,
'is_won' => $isWon,
'remotely_created_at' => $remotelyCreatedAt,
'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),
'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),
];
if ($accountId) {
$data['account_id'] = $accountId;
}
if ($stage) {
$data['stage_id'] = $stage->id;
}
if ($businessProcess) {
$recordType = $this->getCachedBusinessProcessRecordType($businessProcess);
if ($recordType) {
$data['record_type_id'] = $recordType->id;
}
}
return $data;
}
private function getCachedOwnerProfile(string $ownerId): mixed
{
$cacheKey = $this->config->getId() . ':' . $ownerId;
if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {
return $this->cachedOwnerProfiles[$cacheKey];
}
$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);
$this->cachedOwnerProfiles[$cacheKey] = $profile;
return $profile;
}
private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed
{
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId();
if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {
return $this->cachedRecordTypes[$cacheKey];
}
$recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);
$this->cachedRecordTypes[$cacheKey] = $recordType;
return $recordType;
}
private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess
{
if ($pipelineId === null) {
return null;
}
$cacheKey = $this->getBusinessProcessCacheKey($pipelineId);
if (isset($this->cachedBusinessProcesses[$cacheKey])) {
return $this->cachedBusinessProcesses[$cacheKey];
}
$businessProcess = $this->getBusinessProcess($pipelineId);
if (! $businessProcess instanceof BusinessProcess) {
$this->importStages();
$businessProcess = $this->getBusinessProcess($pipelineId);
}
if (! $businessProcess instanceof BusinessProcess) {
$this->logger->info(
'[HubSpot] Deal is not attached to a pipeline',
[
'pipeline' => $pipelineId]
);
}
$this->cachedBusinessProcesses[$cacheKey] = $businessProcess;
return $businessProcess;
}
private function getBusinessProcess(string $pipelineId): ?BusinessProcess
{
return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);
}
private function getBusinessProcessCacheKey(string $pipelineId): string
{
return $this->config->getId() . '_' . $pipelineId;
}
private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage
{
if (empty($stageId)) {
return null;
}
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;
if (isset($this->cachedStages[$cacheKey])) {
return $this->cachedStages[$cacheKey];
}
$stage = $this->crmEntityRepository->getPipelineStageByConditions(
$businessProcess,
[
'crm_provider_id' => $stageId,
'type' => Stage::TYPE_OPPORTUNITY,
]
);
if ($stage === null) {
$this->importStages(null, $stageId);
}
if ($stage === null) {
$this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);
}
$this->cachedStages[$cacheKey] = $stage;
return $stage;
}
private function resolveAmount(array $properties): ?string
{
$amount = null;
if (! empty($properties['amount'])) {
$amount = str_replace(',', '', $properties['amount']);
}
if ($this->config->hasDefaultCurrencyFieldSet()) {
$valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();
$amount = $properties[$valueFieldName] ?? $amount;
}
return $amount;
}
private function parseCleanDatetime(string $datetime): ?Carbon
{
// Treat pre-1980 values as invalid
$minValidDate = Carbon::parse('1980-01-01 00:00:00');
try {
$date = Carbon::parse($datetime);
if ($minValidDate->gt($date)) {
return null;
}
return $date;
} catch (Exception) {
return null; // On parse error, treat as null
}
}
private function resolveDealProbability(?string $stageProbability): int
{
if ($stageProbability === null) {
return 0;
}
$probability = (float) $stageProbability;
return $probability > 1 ? 0 : (int) ($probability * 100);
}
private function resolveForecastCategory(?string $forecastCategory): string
{
if (! $forecastCategory) {
return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;
}
$forecastCategory = str_replace('_', ' ', $forecastCategory);
return ucwords(strtolower($forecastCategory));
}
private function importExternalFieldData(array $properties, int $opportunityId): void
{
$this->importOpportunityCrmFieldData(
$properties,
$this->getCachedOpportunitySyncableFields(),
$opportunityId
);
}
private function getCachedOpportunitySyncableFields(): array
{
$cacheKey = (string) $this->config->getId();
if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {
$this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();
}
return $this->cachedOpportunitySyncableFields[$cacheKey];
}
private function importOpportunityContacts(Opportunity $opportunity, array $associations): void
{
// Handle empty or missing contact associations
if (empty($associations)) {
// Remove all existing contact associations if none provided
$this->removeAllOpportunityContacts($opportunity);
return;
}
// Use differential sync approach for better performance and accuracy
$this->syncOpportunityContactsDifferential($opportunity, $associations);
}
/**
* Sync opportunity contacts using differential approach
* This compares current vs new associations and only makes necessary changes
*/
private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void
{
$currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);
$contactAssociationIds = array_keys($contactAssociations);
$contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);
$contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);
if (empty($contactsToAdd) && empty($contactsToRemove)) {
return;
}
$this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);
$this->removeContactAssociations($opportunity, $contactsToRemove);
$this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);
}
private function getCurrentContactCrmIds(Opportunity $opportunity): array
{
return $opportunity->contacts()
->pluck('contacts.crm_provider_id')
->toArray();
}
private function logContactAssociationChanges(
Opportunity $opportunity,
array $currentContactCrmIds,
array $contactAssociations,
array $contactsToAdd,
array $contactsToRemove
): void {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [
'opportunity_id' => $opportunity->getId(),
'current_contacts' => $currentContactCrmIds,
'new_contacts' => $contactAssociations,
'contacts_to_add' => $contactsToAdd,
'contacts_to_remove' => $contactsToRemove,
]);
}
private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void
{
if (empty($contactsToRemove)) {
return;
}
$contactsToDetach = $opportunity->contacts()
->whereIn('contacts.crm_provider_id', $contactsToRemove)
->pluck('contacts.id')
->toArray();
if (! empty($contactsToDetach)) {
$opportunity->contacts()->detach($contactsToDetach);
$this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_contact_crm_ids' => $contactsToRemove,
'removed_contact_count' => count($contactsToDetach),
]);
}
}
private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void
{
if (empty($contactsToAdd)) {
return;
}
$contactsAdded = [];
foreach ($contactsToAdd as $crmId) {
$id = $contactAssociations[$crmId];
if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {
$contactsAdded[] = $crmId;
}
}
$this->logAddedContacts($opportunity, $contactsAdded);
}
private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool
{
try {
return $this->performContactAttachment($opportunity, $id, $crmId);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [
'opportunity_id' => $opportunity->getId(),
'contact_crm_id' => $crmId,
'error' => $e->getMessage(),
]);
return false;
}
}
private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool
{
try {
$opportunity->contacts()->attach($contactId, [
'crm_provider_id' => $crmId,
]);
return true;
} catch (\Illuminate\Database\QueryException $e) {
if (str_contains($e->getMessage(), 'Duplicate entry')) {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [
'contact_id' => $contactId,
'contact_crm_id' => $crmId,
'opportunity_id' => $opportunity->getId(),
]);
return false;
}
throw $e;
}
}
private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void
{
if (! empty($contactsAdded)) {
$this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [
'opportunity_id' => $opportunity->getId(),
'added_contact_crm_ids' => $contactsAdded,
'added_contacts_count' => count($contactsAdded),
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"34","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"22","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\CollectionResponseAssociatedId;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Models\\Account;\nuse Exception;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Jobs\\Crm\\MatchActivitiesToNewOpportunity;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\BusinessProcess;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Models\\Opportunity;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Repositories\\Crm\\CrmEntityRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DealFieldsService;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\HubspotSingleSyncStrategy;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\nuse Jiminny\\Services\\Crm\\OpportunitySyncStrategyResolver;\nuse Jiminny\\Utils\\CurrencyFormatter;\n\n/**\n * Optimized sync methods for better performance\n * These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains\n */\ntrait OpportunitySyncTrait\n{\n private const int BATCH_SIZE = 100;\n private const int BATCH_PROCESS_SIZE = 800;\n\n protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;\n protected CrmEntityRepository $crmEntityRepository;\n protected DealFieldsService $dealFieldsService;\n\n private ?array $cachedClosedDealStages = null;\n private array $cachedBusinessProcesses = [];\n private array $cachedStages = [];\n /** @var array<string, array<string>> keyed by config id */\n private array $cachedOpportunitySyncableFields = [];\n /** @var array<string, mixed> keyed by configId:ownerId */\n private array $cachedOwnerProfiles = [];\n /** @var array<string, mixed> keyed by configId:businessProcessId */\n private array $cachedRecordTypes = [];\n\n public function syncOpportunities(array $parameters, ?string $strategy = null): int\n {\n $startTime = microtime(true);\n $strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);\n $parameters['config'] = $this->config;\n $syncCount = 0;\n $reportedTotal = 0;\n $lastSyncedId = [];\n $strategyNames = [];\n\n try {\n foreach ($strategies as $strategyName => $syncStrategy) {\n $strategyNames[] = $strategyName;\n $this->logger->info(\n '[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,\n ['team' => $this->team->getId()]\n );\n\n $total = 0;\n $lastId = null;\n $buffer = [];\n\n // HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies\n foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {\n $buffer[] = $hsOpportunity;\n\n // process every 800 rows (fits < 1 000 association limit)\n if (\\count($buffer) >= self::BATCH_PROCESS_SIZE) {\n $syncCount += $this->processOpportunityBatch($buffer);\n $buffer = [];\n }\n }\n\n // leftovers\n if ($buffer) {\n $syncCount += $this->processOpportunityBatch($buffer);\n }\n\n $reportedTotal += $total;\n $lastSyncedId = $lastId;\n }\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException | CrmException $e) {\n $this->handleSyncException($e, $parameters);\n }\n\n $durationMs = round((microtime(true) - $startTime) * 1000, 2);\n $this->logger->info(\n '[HubSpot] Synced opportunities',\n [\n 'team' => $this->team->getId(),\n 'strategies' => implode(',', $strategyNames),\n 'sync_count' => $syncCount,\n 'total' => $reportedTotal,\n 'last_synced_id' => $lastSyncedId,\n 'duration_ms' => $durationMs,\n ]\n );\n\n return $reportedTotal;\n }\n\n private function handleSyncException(\\Throwable $e, array $parameters): void\n {\n if (($parameters['since'] ?? null) instanceof Carbon) {\n $parameters['since'] = $parameters['since']->toDateTimeString();\n }\n $parameters['config'] = $this->config->getId();\n\n $this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [\n 'teamId' => $this->team->getUuid(),\n 'parameters' => $parameters,\n 'reason' => $e->getMessage(),\n ]);\n }\n\n /**\n * @inheritdoc\n */\n public function syncOpportunity(string $crmId): ?Opportunity\n {\n $this->client->getOpportunityById($params['crm_id'], $fields);;\n $strategy = $this->opportunitySyncStrategyResolver->resolve(\n $this->config,\n OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,\n );\n\n $parameters = [\n 'config' => $this->config,\n 'crm_id' => $crmId,\n ];\n\n try {\n if (! $strategy instanceof HubspotSingleSyncStrategy) {\n throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');\n }\n\n $hsOpportunity = $strategy->fetchOpportunity($parameters);\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException $e) {\n $this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [\n 'teamId' => $this->team->getUuid(),\n 'crmId' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);\n\n return $this->importOrUpdateOpportunity($hsOpportunity);\n }\n\n /**\n * Process webhook-collected opportunity batches.\n *\n * Drains Redis sets containing company CRM IDs collected from webhook events\n * and dispatches ImportOpportunityBatch jobs for batch processing.\n *\n * @return int Number of opportunity IDs dispatched to jobs\n */\n public function batchSyncOpportunities(): int\n {\n $configId = $this->team->getCrmConfiguration()->getId();\n\n return $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n }\n\n /**\n * Import a batch of opportunities by their CRM IDs.\n * Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().\n *\n * @param array<string> $crmIds HubSpot deal CRM IDs\n *\n * @return array{success: array, failed_ids: array, errors?: array<string, string>}\n */\n public function importOpportunityBatchByIds(array $crmIds): array\n {\n $fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);\n\n $allDeals = [];\n foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {\n $deals = $this->client->getOpportunitiesByIds($chunk, $fields);\n foreach ($deals as $deal) {\n $allDeals[] = $deal;\n }\n }\n\n // IDs not returned by HubSpot are likely deleted or inaccessible deals.\n // These are not failures — retrying won't bring them back.\n $fetchedIds = array_map('strval', array_column($allDeals, 'id'));\n $notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));\n\n if (! empty($notFoundIds)) {\n $this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [\n 'teamId' => $this->team->getId(),\n 'notFoundCount' => \\count($notFoundIds),\n 'notFoundIds' => $notFoundIds,\n 'requestedCount' => \\count($crmIds),\n 'fetchedCount' => \\count($allDeals),\n ]);\n }\n\n if (empty($allDeals)) {\n return ['success' => [], 'failed_ids' => []];\n }\n\n return $this->importOpportunityBatch($allDeals);\n }\n\n private function getClosedDealStages(): array\n {\n if ($this->cachedClosedDealStages !== null) {\n return $this->cachedClosedDealStages;\n }\n\n $stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);\n $data = [\n 'lost' => [],\n 'won' => [],\n ];\n\n foreach ($stages as $stage) {\n if ($stage->probability == 0.00) {\n $data['lost'][] = $stage->crm_provider_id;\n }\n if ($stage->probability == 100.00) {\n $data['won'][] = $stage->crm_provider_id;\n }\n }\n\n $this->cachedClosedDealStages = $data;\n\n return $data;\n }\n\n /**\n * Import deals into the database with pre-fetched associations.\n *\n * API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT\n * caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()\n * where Laravel retries the whole job with backoff. After all retries exhausted,\n * failed() requeues all IDs to Redis.\n *\n * The per-deal loop catches exceptions individually. A deal can end up in three states:\n * - success: imported/updated successfully\n * - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)\n * These are permanent issues — retrying won't fix them.\n * - skipped (null): missing dependencies (no account, unknown pipeline/stage).\n * This is acceptable — the deal cannot be imported until those exist.\n */\n private function importOpportunityBatch(array $deals): array\n {\n $syncedOpportunities = [\n 'success' => [],\n 'failed_ids' => [],\n ];\n $dealIds = array_column($deals, 'id');\n $batchStart = microtime(true);\n $slowDeals = [];\n\n // Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the\n // queue job retries the whole batch and eventually requeues all deal IDs back to Redis.\n try {\n $companyAssocStart = microtime(true);\n $companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');\n $companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);\n\n $contactAssocStart = microtime(true);\n $contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');\n $contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);\n\n $prepareStart = microtime(true);\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n $prepareTimings = [];\n $associationsData = $this->prepareAssociatedEntities(\n $companyAssociations,\n $contactAssociations,\n $prepareTimings\n );\n $prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);\n\n $missingCompanies = count(array_diff(\n $allCompanyIds,\n array_keys($associationsData['company_id_mappings'] ?? [])\n ));\n $missingContacts = count(array_diff(\n $allContactIds,\n array_keys($associationsData['contact_id_mappings'] ?? [])\n ));\n\n $existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(\n $this->config,\n array_map('strval', $dealIds)\n );\n $existingCrmIdSet = array_flip($existingCrmIds);\n } catch (\\Throwable $e) {\n $this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [\n 'teamId' => $this->team->getId(),\n 'dealCount' => count($dealIds),\n 'error' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $loopStart = microtime(true);\n foreach ($deals as $deal) {\n $dealStart = microtime(true);\n\n try {\n $deal['associations'] = $this->prepareAssociationsForOpportunity(\n $deal['id'],\n $companyAssociations,\n $contactAssociations,\n $associationsData\n );\n\n $syncedOpportunity = $this->importOrUpdateOpportunity(\n $deal,\n isset($existingCrmIdSet[(string) $deal['id']])\n );\n if ($syncedOpportunity) {\n $syncedOpportunities['success'][] = $syncedOpportunity;\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [\n 'teamId' => $this->team->getId(),\n 'crmId' => $deal['id'],\n 'error' => $e->getMessage(),\n ]);\n $syncedOpportunities['failed_ids'][] = $deal['id'];\n $syncedOpportunities['errors'][$deal['id']] = $e->getMessage();\n }\n\n $dealMs = (int) round((microtime(true) - $dealStart) * 1000);\n if ($dealMs > 1000) {\n $slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];\n }\n }\n $loopMs = (int) round((microtime(true) - $loopStart) * 1000);\n $totalMs = (int) round((microtime(true) - $batchStart) * 1000);\n\n $this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [\n 'teamId' => $this->team->getId(),\n 'deal_count' => count($deals),\n 'total_ms' => $totalMs,\n 'company_assoc_api_ms' => $companyAssocMs,\n 'contact_assoc_api_ms' => $contactAssocMs,\n 'prepare_entities_ms' => $prepareMs,\n 'prepare_accounts_ms' => $prepareTimings['accounts_ms'],\n 'prepare_contacts_ms' => $prepareTimings['contacts_ms'],\n 'total_companies' => count($allCompanyIds),\n 'missing_companies' => $missingCompanies,\n 'total_contacts' => count($allContactIds),\n 'missing_contacts' => $missingContacts,\n 'deals_loop_ms' => $loopMs,\n 'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,\n 'slow_deals_count' => count($slowDeals),\n 'slow_deals' => array_slice($slowDeals, 0, 10),\n ]);\n\n return $syncedOpportunities;\n }\n\n /**\n * Prepare associated entities for opportunities with optimized batch processing\n * Returns structured data with CRM ID to DB ID mappings for each opportunity\n */\n private function prepareAssociatedEntities(\n array $companyAssociations,\n array $contactAssociations,\n array &$timings = []\n ): array {\n // Step 1: Collect all unique company and contact IDs from associations\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n\n // Step 2: Batch sync missing entities and get CRM ID to DB ID mappings\n $companyIdMappings = [];\n $contactIdMappings = [];\n $accountsMs = 0;\n $contactsMs = 0;\n\n if (! empty($allCompanyIds)) {\n $start = microtime(true);\n $companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);\n $accountsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n if (! empty($allContactIds)) {\n $start = microtime(true);\n $contactIdMappings = $this->prepareAssociatedContacts($allContactIds);\n $contactsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n $timings = [\n 'accounts_ms' => $accountsMs,\n 'contacts_ms' => $contactsMs,\n ];\n\n return [\n 'company_id_mappings' => $companyIdMappings,\n 'contact_id_mappings' => $contactIdMappings,\n ];\n }\n\n /**\n * Flatten association data to get unique IDs\n */\n private function flattenAssociationIds(array $associations): array\n {\n $ids = [];\n foreach ($associations as $dealAssociations) {\n if (is_array($dealAssociations)) {\n foreach ($dealAssociations as $id) {\n $ids[$id] = true;\n }\n }\n }\n\n return array_keys($ids);\n }\n\n /**\n * Batch sync missing accounts\n */\n private function prepareAssociatedAccounts(array $companyIds): array\n {\n // Find which accounts already exist (lean covering-index lookup)\n $existingAccountsData = $this->crmEntityRepository\n ->getExistingAccountIdsMap($this->config, $companyIds);\n\n $missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));\n\n if (empty($missingCompanyIds)) {\n return $existingAccountsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [\n 'teamId' => $this->team->getUuid(),\n 'total_companies' => count($companyIds),\n 'existing_companies' => count($existingAccountsData),\n 'missing_companies' => count($missingCompanyIds),\n ]);\n\n // we already have limit on opportunity ids count\n // Initialize variable before try block\n $syncedAccountsData = [];\n\n try {\n $syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [\n 'size' => count($missingCompanyIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedAccountsData = [];\n }\n\n return $existingAccountsData + $syncedAccountsData;\n }\n\n /**\n * Prepare associated contacts - find existing and sync missing ones\n * Returns mapping of CRM ID to DB ID\n */\n private function prepareAssociatedContacts(array $contactIds): array\n {\n // Find which contacts already exist (lean covering-index lookup)\n $existingContactsData = $this->crmEntityRepository\n ->getExistingContactIdsMap($this->config, $contactIds);\n\n $missingContactIds = array_diff($contactIds, array_keys($existingContactsData));\n\n if (empty($missingContactIds)) {\n return $existingContactsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [\n 'teamId' => $this->team->getUuid(),\n 'total_contacts' => count($contactIds),\n 'existing_contacts' => count($existingContactsData),\n 'missing_contacts' => count($missingContactIds),\n ]);\n\n // Sync missing contacts using batch API\n try {\n $syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [\n 'size' => count($missingContactIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedContactsData = [];\n }\n\n return $existingContactsData + $syncedContactsData;\n }\n\n private function batchSyncCrmObjects(string $objectType, array $crmIds): array\n {\n $syncObjects = [];\n $crmObjectIds = array_values($crmIds);\n\n foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {\n try {\n $objects = $objectType === 'companies' ?\n $this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :\n $this->client->getContactsByIds($chunk, $this->getContactFields());\n\n foreach ($objects as $objectId => $objectData) {\n $this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [\n 'requested_count' => count($chunk),\n 'synced_count' => count($objects),\n ]);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [\n 'ids' => $chunk,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n return $syncObjects;\n }\n\n private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void\n {\n try {\n $object = $objectType === 'companies' ?\n $this->importAccount($objectData) :\n $this->importContact($objectData);\n\n if ($object) {\n $syncObjects[$object->getCrmProviderId()] = $object->getId();\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [\n 'id' => $objectId,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n /**\n * Prepare associations for a single opportunity\n *\n * The return value is an array with the following structure:\n * [\n * 'companies' => [\n * $companyCrmId => $companyId,\n * ...\n * ],\n * 'contacts' => [\n * $contactCrmId => $contactId,\n * ...\n * ],\n * 'account_id' => $accountId,\n * ]\n */\n private function prepareAssociationsForOpportunity(\n string $oppCrmId,\n array $companyAssociations,\n array $contactAssociations,\n array $associationsData\n ): array {\n $associations = [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n\n $oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];\n foreach ($oppCompanyIds as $companyCrmId) {\n if (isset($associationsData['company_id_mappings'][$companyCrmId])) {\n $associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];\n\n // Set primary account (first company becomes primary account)\n if ($associations['account_id'] === null) {\n $associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];\n }\n }\n }\n\n $oppContactIds = $contactAssociations[$oppCrmId] ?? [];\n foreach ($oppContactIds as $contactCrmId) {\n if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {\n $associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];\n }\n }\n\n return $associations;\n }\n\n /**\n * Update only associations for an opportunity\n */\n private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void\n {\n // Update contact associations\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n // Update company (account) associations\n $this->updateOpportunityAccount($opportunity, $associations['account_id']);\n }\n\n /**\n * Remove all contact associations from an opportunity\n */\n private function removeAllOpportunityContacts(Opportunity $opportunity): void\n {\n $currentCount = (int) $opportunity->contacts()->count();\n\n if ($currentCount > 0) {\n $opportunity->contacts()->detach();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_count' => $currentCount,\n ]);\n }\n }\n\n private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void\n {\n if ($accountId === null) {\n // No account ID provided - keep current account\n return;\n }\n\n $currentAccountId = $opportunity->getAccountId();\n\n // Only update if account has changed\n if ($currentAccountId !== $accountId) {\n $opportunity->account_id = $accountId;\n $opportunity->save();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [\n 'opportunity_id' => $opportunity->getId(),\n 'old_account_id' => $currentAccountId,\n 'new_account_id' => $accountId,\n ]);\n }\n }\n\n /**\n * Find existing opportunities by external IDs (OPTIMIZED VERSION)\n * Uses batch query for better performance\n */\n private function findExistingOpportunities(array $crmIds): Collection\n {\n return $this->crmEntityRepository\n ->findOpportunitiesByExternalIds($this->config, $crmIds);\n }\n\n private function processOpportunityBatch(array $opportunities): int\n {\n $syncedOpportunities = $this->importOpportunityBatch($opportunities);\n\n return count($syncedOpportunities['success'] ?? []);\n }\n\n /**\n * Convert single deal associations from HubSpot format to internal format\n * Handles both HubSpot SDK objects and array formats\n *\n * @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed\n *\n * @return array Processed associations with DB IDs\n */\n private function convertDealAssociations(array $opportunityAssociations): array\n {\n $associations = $this->initializeAssociationsStructure();\n\n if (empty($opportunityAssociations)) {\n return $associations;\n }\n\n $associationIds = $this->extractAssociationIds($opportunityAssociations);\n\n $this->processCompanyAssociations($associationIds, $associations);\n $this->processContactAssociations($associationIds, $associations);\n\n return $associations;\n }\n\n private function initializeAssociationsStructure(): array\n {\n return [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n }\n\n private function extractAssociationIds(array $opportunityAssociations): array\n {\n $associationIds = [];\n\n foreach ($opportunityAssociations as $type => $associationData) {\n if (! empty($associationData)) {\n $associationIds[$type] = $this->convertSingleDealAssociations($associationData);\n }\n }\n\n return $associationIds;\n }\n\n private function processCompanyAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['companies'])) {\n return;\n }\n\n $companyId = $associationIds['companies'][0];\n $account = $this->findOrSyncAccount($companyId);\n\n if ($account instanceof Account) {\n $associations['companies'][$companyId] = $account->getId();\n $associations['account_id'] = $account->getId();\n }\n }\n\n private function processContactAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['contacts'])) {\n return;\n }\n\n foreach ($associationIds['contacts'] as $contactId) {\n $contact = $this->findOrSyncContact($contactId);\n\n if ($contact instanceof Contact) {\n $associations['contacts'][$contactId] = $contact->getId();\n }\n }\n }\n\n private function findOrSyncAccount(string $companyId): ?Account\n {\n $account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);\n\n if (! $account instanceof Account) {\n $account = $this->syncAccount($companyId);\n }\n\n return $account;\n }\n\n private function findOrSyncContact(string $contactId): ?Contact\n {\n $contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);\n\n if (! $contact instanceof Contact) {\n $contact = $this->syncContact($contactId);\n }\n\n return $contact;\n }\n\n private function convertSingleDealAssociations($opportunityAssociations = null): array\n {\n $associationData = [];\n\n if ($opportunityAssociations === null) {\n return $associationData;\n }\n\n // Handle array input (from extractAssociationIds)\n if (is_array($opportunityAssociations)) {\n return $opportunityAssociations;\n }\n\n // Handle CollectionResponseAssociatedId object\n if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {\n foreach ($opportunityAssociations->getResults() as $association) {\n $associationData[] = $association->getId();\n }\n }\n\n return $associationData;\n }\n\n private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity\n {\n if (empty($crmData['properties'])) {\n return null;\n }\n\n $crmId = (string) $crmData['id'];\n $properties = $crmData['properties'];\n $associations = $crmData['associations'] ?? [];\n\n $opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(\n $this->config,\n $crmId\n );\n\n if ($opportunityExists) {\n return $this->updateOpportunity($crmId, $properties, $associations);\n }\n\n return $this->createOpportunity($crmId, $properties, $associations);\n }\n\n /**\n * Create new opportunity\n */\n private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n if (! $accountId) {\n return null;\n }\n\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n if (! $businessProcess) {\n return null;\n }\n\n $stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);\n if (! $stage) {\n return null;\n }\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n if ($opportunity->wasRecentlyCreated) {\n MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());\n }\n\n return $opportunity;\n }\n\n /**\n * Update existing opportunity\n */\n private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n $stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->updateOpportunityAssociations($opportunity, $associations);\n\n return $opportunity;\n }\n\n private function resolveAccountId(array $associations): ?int\n {\n if (! empty($associations['account_id'])) {\n return $associations['account_id'];\n }\n\n if (empty($associations)) {\n return null;\n }\n\n // Fallback: use first company as account (currently SDK returns one company)\n foreach ($associations['companies'] as $accountId) {\n return $accountId;\n }\n\n return null;\n }\n\n private function buildOpportunityData(\n array $properties,\n ?int $accountId,\n ?BusinessProcess $businessProcess,\n ?Stage $stage\n ): array {\n $ownerId = null;\n $profile = null;\n if (! empty($properties['hubspot_owner_id'])) {\n $ownerId = $properties['hubspot_owner_id'];\n $profile = $this->getCachedOwnerProfile((string) $ownerId);\n }\n\n $name = 'Unknown';\n if (isset($properties['dealname'])) {\n $name = mb_strimwidth($properties['dealname'], 0, 128);\n }\n\n $amount = $this->resolveAmount($properties);\n $currency = $properties['deal_currency_code'] ?? null;\n\n $closeDate = null;\n if (! empty($properties['closedate'])) {\n $closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');\n }\n\n $remotelyCreatedAt = null;\n if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {\n $date = $this->parseCleanDatetime($properties['createdate']);\n $remotelyCreatedAt = $date?->format('Y-m-d H:i:s');\n }\n\n $closedStages = $this->getClosedDealStages();\n $isWon = in_array($properties['dealstage'], $closedStages['won']);\n $isLost = in_array($properties['dealstage'], $closedStages['lost']);\n\n $data = [\n 'team_id' => $this->team->getId(),\n 'user_id' => $profile ? $profile->user_id : null,\n 'owner_id' => $ownerId,\n 'name' => $name,\n 'value' => ! empty($amount) ? $amount : null,\n 'currency_code' => CurrencyFormatter::formatCode($currency),\n 'close_date' => $closeDate,\n 'is_closed' => $isWon || $isLost,\n 'is_won' => $isWon,\n 'remotely_created_at' => $remotelyCreatedAt,\n 'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),\n 'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),\n ];\n\n if ($accountId) {\n $data['account_id'] = $accountId;\n }\n\n if ($stage) {\n $data['stage_id'] = $stage->id;\n }\n\n if ($businessProcess) {\n $recordType = $this->getCachedBusinessProcessRecordType($businessProcess);\n if ($recordType) {\n $data['record_type_id'] = $recordType->id;\n }\n }\n\n return $data;\n }\n\n private function getCachedOwnerProfile(string $ownerId): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $ownerId;\n if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {\n return $this->cachedOwnerProfiles[$cacheKey];\n }\n\n $profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);\n $this->cachedOwnerProfiles[$cacheKey] = $profile;\n\n return $profile;\n }\n\n private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId();\n if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {\n return $this->cachedRecordTypes[$cacheKey];\n }\n\n $recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);\n $this->cachedRecordTypes[$cacheKey] = $recordType;\n\n return $recordType;\n }\n\n private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess\n {\n if ($pipelineId === null) {\n return null;\n }\n\n $cacheKey = $this->getBusinessProcessCacheKey($pipelineId);\n if (isset($this->cachedBusinessProcesses[$cacheKey])) {\n return $this->cachedBusinessProcesses[$cacheKey];\n }\n\n $businessProcess = $this->getBusinessProcess($pipelineId);\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->importStages();\n $businessProcess = $this->getBusinessProcess($pipelineId);\n }\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->logger->info(\n '[HubSpot] Deal is not attached to a pipeline',\n [\n 'pipeline' => $pipelineId]\n );\n }\n\n $this->cachedBusinessProcesses[$cacheKey] = $businessProcess;\n\n return $businessProcess;\n }\n\n private function getBusinessProcess(string $pipelineId): ?BusinessProcess\n {\n return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);\n }\n\n private function getBusinessProcessCacheKey(string $pipelineId): string\n {\n return $this->config->getId() . '_' . $pipelineId;\n }\n\n private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage\n {\n if (empty($stageId)) {\n return null;\n }\n\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;\n if (isset($this->cachedStages[$cacheKey])) {\n return $this->cachedStages[$cacheKey];\n }\n\n $stage = $this->crmEntityRepository->getPipelineStageByConditions(\n $businessProcess,\n [\n 'crm_provider_id' => $stageId,\n 'type' => Stage::TYPE_OPPORTUNITY,\n ]\n );\n\n if ($stage === null) {\n $this->importStages(null, $stageId);\n }\n\n if ($stage === null) {\n $this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);\n }\n\n $this->cachedStages[$cacheKey] = $stage;\n\n return $stage;\n }\n\n private function resolveAmount(array $properties): ?string\n {\n $amount = null;\n if (! empty($properties['amount'])) {\n $amount = str_replace(',', '', $properties['amount']);\n }\n\n if ($this->config->hasDefaultCurrencyFieldSet()) {\n $valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();\n $amount = $properties[$valueFieldName] ?? $amount;\n }\n\n return $amount;\n }\n\n private function parseCleanDatetime(string $datetime): ?Carbon\n {\n // Treat pre-1980 values as invalid\n $minValidDate = Carbon::parse('1980-01-01 00:00:00');\n\n try {\n $date = Carbon::parse($datetime);\n\n if ($minValidDate->gt($date)) {\n return null;\n }\n\n return $date;\n } catch (Exception) {\n return null; // On parse error, treat as null\n }\n }\n\n private function resolveDealProbability(?string $stageProbability): int\n {\n if ($stageProbability === null) {\n return 0;\n }\n\n $probability = (float) $stageProbability;\n\n return $probability > 1 ? 0 : (int) ($probability * 100);\n }\n\n private function resolveForecastCategory(?string $forecastCategory): string\n {\n if (! $forecastCategory) {\n return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;\n }\n\n $forecastCategory = str_replace('_', ' ', $forecastCategory);\n\n return ucwords(strtolower($forecastCategory));\n }\n\n private function importExternalFieldData(array $properties, int $opportunityId): void\n {\n $this->importOpportunityCrmFieldData(\n $properties,\n $this->getCachedOpportunitySyncableFields(),\n $opportunityId\n );\n }\n\n private function getCachedOpportunitySyncableFields(): array\n {\n $cacheKey = (string) $this->config->getId();\n if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {\n $this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();\n }\n\n return $this->cachedOpportunitySyncableFields[$cacheKey];\n }\n\n private function importOpportunityContacts(Opportunity $opportunity, array $associations): void\n {\n // Handle empty or missing contact associations\n if (empty($associations)) {\n // Remove all existing contact associations if none provided\n $this->removeAllOpportunityContacts($opportunity);\n\n return;\n }\n\n // Use differential sync approach for better performance and accuracy\n $this->syncOpportunityContactsDifferential($opportunity, $associations);\n }\n\n /**\n * Sync opportunity contacts using differential approach\n * This compares current vs new associations and only makes necessary changes\n */\n private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void\n {\n $currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);\n $contactAssociationIds = array_keys($contactAssociations);\n\n $contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);\n $contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);\n\n if (empty($contactsToAdd) && empty($contactsToRemove)) {\n return;\n }\n\n $this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);\n\n $this->removeContactAssociations($opportunity, $contactsToRemove);\n $this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);\n }\n\n private function getCurrentContactCrmIds(Opportunity $opportunity): array\n {\n return $opportunity->contacts()\n ->pluck('contacts.crm_provider_id')\n ->toArray();\n }\n\n private function logContactAssociationChanges(\n Opportunity $opportunity,\n array $currentContactCrmIds,\n array $contactAssociations,\n array $contactsToAdd,\n array $contactsToRemove\n ): void {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [\n 'opportunity_id' => $opportunity->getId(),\n 'current_contacts' => $currentContactCrmIds,\n 'new_contacts' => $contactAssociations,\n 'contacts_to_add' => $contactsToAdd,\n 'contacts_to_remove' => $contactsToRemove,\n ]);\n }\n\n private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void\n {\n if (empty($contactsToRemove)) {\n return;\n }\n\n $contactsToDetach = $opportunity->contacts()\n ->whereIn('contacts.crm_provider_id', $contactsToRemove)\n ->pluck('contacts.id')\n ->toArray();\n\n if (! empty($contactsToDetach)) {\n $opportunity->contacts()->detach($contactsToDetach);\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_contact_crm_ids' => $contactsToRemove,\n 'removed_contact_count' => count($contactsToDetach),\n ]);\n }\n }\n\n private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void\n {\n if (empty($contactsToAdd)) {\n return;\n }\n\n $contactsAdded = [];\n foreach ($contactsToAdd as $crmId) {\n $id = $contactAssociations[$crmId];\n\n if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {\n $contactsAdded[] = $crmId;\n }\n }\n\n $this->logAddedContacts($opportunity, $contactsAdded);\n }\n\n private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool\n {\n try {\n return $this->performContactAttachment($opportunity, $id, $crmId);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [\n 'opportunity_id' => $opportunity->getId(),\n 'contact_crm_id' => $crmId,\n 'error' => $e->getMessage(),\n ]);\n\n return false;\n }\n }\n\n private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool\n {\n try {\n $opportunity->contacts()->attach($contactId, [\n 'crm_provider_id' => $crmId,\n ]);\n\n return true;\n } catch (\\Illuminate\\Database\\QueryException $e) {\n if (str_contains($e->getMessage(), 'Duplicate entry')) {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [\n 'contact_id' => $contactId,\n 'contact_crm_id' => $crmId,\n 'opportunity_id' => $opportunity->getId(),\n ]);\n\n return false;\n }\n\n throw $e;\n }\n }\n\n private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void\n {\n if (! empty($contactsAdded)) {\n $this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'added_contact_crm_ids' => $contactsAdded,\n 'added_contacts_count' => count($contactsAdded),\n ]);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\CollectionResponseAssociatedId;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Models\\Account;\nuse Exception;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Jobs\\Crm\\MatchActivitiesToNewOpportunity;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\BusinessProcess;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Models\\Opportunity;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Repositories\\Crm\\CrmEntityRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DealFieldsService;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\HubspotSingleSyncStrategy;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\nuse Jiminny\\Services\\Crm\\OpportunitySyncStrategyResolver;\nuse Jiminny\\Utils\\CurrencyFormatter;\n\n/**\n * Optimized sync methods for better performance\n * These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains\n */\ntrait OpportunitySyncTrait\n{\n private const int BATCH_SIZE = 100;\n private const int BATCH_PROCESS_SIZE = 800;\n\n protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;\n protected CrmEntityRepository $crmEntityRepository;\n protected DealFieldsService $dealFieldsService;\n\n private ?array $cachedClosedDealStages = null;\n private array $cachedBusinessProcesses = [];\n private array $cachedStages = [];\n /** @var array<string, array<string>> keyed by config id */\n private array $cachedOpportunitySyncableFields = [];\n /** @var array<string, mixed> keyed by configId:ownerId */\n private array $cachedOwnerProfiles = [];\n /** @var array<string, mixed> keyed by configId:businessProcessId */\n private array $cachedRecordTypes = [];\n\n public function syncOpportunities(array $parameters, ?string $strategy = null): int\n {\n $startTime = microtime(true);\n $strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);\n $parameters['config'] = $this->config;\n $syncCount = 0;\n $reportedTotal = 0;\n $lastSyncedId = [];\n $strategyNames = [];\n\n try {\n foreach ($strategies as $strategyName => $syncStrategy) {\n $strategyNames[] = $strategyName;\n $this->logger->info(\n '[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,\n ['team' => $this->team->getId()]\n );\n\n $total = 0;\n $lastId = null;\n $buffer = [];\n\n // HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies\n foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {\n $buffer[] = $hsOpportunity;\n\n // process every 800 rows (fits < 1 000 association limit)\n if (\\count($buffer) >= self::BATCH_PROCESS_SIZE) {\n $syncCount += $this->processOpportunityBatch($buffer);\n $buffer = [];\n }\n }\n\n // leftovers\n if ($buffer) {\n $syncCount += $this->processOpportunityBatch($buffer);\n }\n\n $reportedTotal += $total;\n $lastSyncedId = $lastId;\n }\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException | CrmException $e) {\n $this->handleSyncException($e, $parameters);\n }\n\n $durationMs = round((microtime(true) - $startTime) * 1000, 2);\n $this->logger->info(\n '[HubSpot] Synced opportunities',\n [\n 'team' => $this->team->getId(),\n 'strategies' => implode(',', $strategyNames),\n 'sync_count' => $syncCount,\n 'total' => $reportedTotal,\n 'last_synced_id' => $lastSyncedId,\n 'duration_ms' => $durationMs,\n ]\n );\n\n return $reportedTotal;\n }\n\n private function handleSyncException(\\Throwable $e, array $parameters): void\n {\n if (($parameters['since'] ?? null) instanceof Carbon) {\n $parameters['since'] = $parameters['since']->toDateTimeString();\n }\n $parameters['config'] = $this->config->getId();\n\n $this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [\n 'teamId' => $this->team->getUuid(),\n 'parameters' => $parameters,\n 'reason' => $e->getMessage(),\n ]);\n }\n\n /**\n * @inheritdoc\n */\n public function syncOpportunity(string $crmId): ?Opportunity\n {\n $this->client->getOpportunityById($params['crm_id'], $fields);;\n $strategy = $this->opportunitySyncStrategyResolver->resolve(\n $this->config,\n OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,\n );\n\n $parameters = [\n 'config' => $this->config,\n 'crm_id' => $crmId,\n ];\n\n try {\n if (! $strategy instanceof HubspotSingleSyncStrategy) {\n throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');\n }\n\n $hsOpportunity = $strategy->fetchOpportunity($parameters);\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException $e) {\n $this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [\n 'teamId' => $this->team->getUuid(),\n 'crmId' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);\n\n return $this->importOrUpdateOpportunity($hsOpportunity);\n }\n\n /**\n * Process webhook-collected opportunity batches.\n *\n * Drains Redis sets containing company CRM IDs collected from webhook events\n * and dispatches ImportOpportunityBatch jobs for batch processing.\n *\n * @return int Number of opportunity IDs dispatched to jobs\n */\n public function batchSyncOpportunities(): int\n {\n $configId = $this->team->getCrmConfiguration()->getId();\n\n return $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n }\n\n /**\n * Import a batch of opportunities by their CRM IDs.\n * Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().\n *\n * @param array<string> $crmIds HubSpot deal CRM IDs\n *\n * @return array{success: array, failed_ids: array, errors?: array<string, string>}\n */\n public function importOpportunityBatchByIds(array $crmIds): array\n {\n $fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);\n\n $allDeals = [];\n foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {\n $deals = $this->client->getOpportunitiesByIds($chunk, $fields);\n foreach ($deals as $deal) {\n $allDeals[] = $deal;\n }\n }\n\n // IDs not returned by HubSpot are likely deleted or inaccessible deals.\n // These are not failures — retrying won't bring them back.\n $fetchedIds = array_map('strval', array_column($allDeals, 'id'));\n $notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));\n\n if (! empty($notFoundIds)) {\n $this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [\n 'teamId' => $this->team->getId(),\n 'notFoundCount' => \\count($notFoundIds),\n 'notFoundIds' => $notFoundIds,\n 'requestedCount' => \\count($crmIds),\n 'fetchedCount' => \\count($allDeals),\n ]);\n }\n\n if (empty($allDeals)) {\n return ['success' => [], 'failed_ids' => []];\n }\n\n return $this->importOpportunityBatch($allDeals);\n }\n\n private function getClosedDealStages(): array\n {\n if ($this->cachedClosedDealStages !== null) {\n return $this->cachedClosedDealStages;\n }\n\n $stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);\n $data = [\n 'lost' => [],\n 'won' => [],\n ];\n\n foreach ($stages as $stage) {\n if ($stage->probability == 0.00) {\n $data['lost'][] = $stage->crm_provider_id;\n }\n if ($stage->probability == 100.00) {\n $data['won'][] = $stage->crm_provider_id;\n }\n }\n\n $this->cachedClosedDealStages = $data;\n\n return $data;\n }\n\n /**\n * Import deals into the database with pre-fetched associations.\n *\n * API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT\n * caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()\n * where Laravel retries the whole job with backoff. After all retries exhausted,\n * failed() requeues all IDs to Redis.\n *\n * The per-deal loop catches exceptions individually. A deal can end up in three states:\n * - success: imported/updated successfully\n * - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)\n * These are permanent issues — retrying won't fix them.\n * - skipped (null): missing dependencies (no account, unknown pipeline/stage).\n * This is acceptable — the deal cannot be imported until those exist.\n */\n private function importOpportunityBatch(array $deals): array\n {\n $syncedOpportunities = [\n 'success' => [],\n 'failed_ids' => [],\n ];\n $dealIds = array_column($deals, 'id');\n $batchStart = microtime(true);\n $slowDeals = [];\n\n // Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the\n // queue job retries the whole batch and eventually requeues all deal IDs back to Redis.\n try {\n $companyAssocStart = microtime(true);\n $companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');\n $companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);\n\n $contactAssocStart = microtime(true);\n $contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');\n $contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);\n\n $prepareStart = microtime(true);\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n $prepareTimings = [];\n $associationsData = $this->prepareAssociatedEntities(\n $companyAssociations,\n $contactAssociations,\n $prepareTimings\n );\n $prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);\n\n $missingCompanies = count(array_diff(\n $allCompanyIds,\n array_keys($associationsData['company_id_mappings'] ?? [])\n ));\n $missingContacts = count(array_diff(\n $allContactIds,\n array_keys($associationsData['contact_id_mappings'] ?? [])\n ));\n\n $existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(\n $this->config,\n array_map('strval', $dealIds)\n );\n $existingCrmIdSet = array_flip($existingCrmIds);\n } catch (\\Throwable $e) {\n $this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [\n 'teamId' => $this->team->getId(),\n 'dealCount' => count($dealIds),\n 'error' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $loopStart = microtime(true);\n foreach ($deals as $deal) {\n $dealStart = microtime(true);\n\n try {\n $deal['associations'] = $this->prepareAssociationsForOpportunity(\n $deal['id'],\n $companyAssociations,\n $contactAssociations,\n $associationsData\n );\n\n $syncedOpportunity = $this->importOrUpdateOpportunity(\n $deal,\n isset($existingCrmIdSet[(string) $deal['id']])\n );\n if ($syncedOpportunity) {\n $syncedOpportunities['success'][] = $syncedOpportunity;\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [\n 'teamId' => $this->team->getId(),\n 'crmId' => $deal['id'],\n 'error' => $e->getMessage(),\n ]);\n $syncedOpportunities['failed_ids'][] = $deal['id'];\n $syncedOpportunities['errors'][$deal['id']] = $e->getMessage();\n }\n\n $dealMs = (int) round((microtime(true) - $dealStart) * 1000);\n if ($dealMs > 1000) {\n $slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];\n }\n }\n $loopMs = (int) round((microtime(true) - $loopStart) * 1000);\n $totalMs = (int) round((microtime(true) - $batchStart) * 1000);\n\n $this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [\n 'teamId' => $this->team->getId(),\n 'deal_count' => count($deals),\n 'total_ms' => $totalMs,\n 'company_assoc_api_ms' => $companyAssocMs,\n 'contact_assoc_api_ms' => $contactAssocMs,\n 'prepare_entities_ms' => $prepareMs,\n 'prepare_accounts_ms' => $prepareTimings['accounts_ms'],\n 'prepare_contacts_ms' => $prepareTimings['contacts_ms'],\n 'total_companies' => count($allCompanyIds),\n 'missing_companies' => $missingCompanies,\n 'total_contacts' => count($allContactIds),\n 'missing_contacts' => $missingContacts,\n 'deals_loop_ms' => $loopMs,\n 'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,\n 'slow_deals_count' => count($slowDeals),\n 'slow_deals' => array_slice($slowDeals, 0, 10),\n ]);\n\n return $syncedOpportunities;\n }\n\n /**\n * Prepare associated entities for opportunities with optimized batch processing\n * Returns structured data with CRM ID to DB ID mappings for each opportunity\n */\n private function prepareAssociatedEntities(\n array $companyAssociations,\n array $contactAssociations,\n array &$timings = []\n ): array {\n // Step 1: Collect all unique company and contact IDs from associations\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n\n // Step 2: Batch sync missing entities and get CRM ID to DB ID mappings\n $companyIdMappings = [];\n $contactIdMappings = [];\n $accountsMs = 0;\n $contactsMs = 0;\n\n if (! empty($allCompanyIds)) {\n $start = microtime(true);\n $companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);\n $accountsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n if (! empty($allContactIds)) {\n $start = microtime(true);\n $contactIdMappings = $this->prepareAssociatedContacts($allContactIds);\n $contactsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n $timings = [\n 'accounts_ms' => $accountsMs,\n 'contacts_ms' => $contactsMs,\n ];\n\n return [\n 'company_id_mappings' => $companyIdMappings,\n 'contact_id_mappings' => $contactIdMappings,\n ];\n }\n\n /**\n * Flatten association data to get unique IDs\n */\n private function flattenAssociationIds(array $associations): array\n {\n $ids = [];\n foreach ($associations as $dealAssociations) {\n if (is_array($dealAssociations)) {\n foreach ($dealAssociations as $id) {\n $ids[$id] = true;\n }\n }\n }\n\n return array_keys($ids);\n }\n\n /**\n * Batch sync missing accounts\n */\n private function prepareAssociatedAccounts(array $companyIds): array\n {\n // Find which accounts already exist (lean covering-index lookup)\n $existingAccountsData = $this->crmEntityRepository\n ->getExistingAccountIdsMap($this->config, $companyIds);\n\n $missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));\n\n if (empty($missingCompanyIds)) {\n return $existingAccountsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [\n 'teamId' => $this->team->getUuid(),\n 'total_companies' => count($companyIds),\n 'existing_companies' => count($existingAccountsData),\n 'missing_companies' => count($missingCompanyIds),\n ]);\n\n // we already have limit on opportunity ids count\n // Initialize variable before try block\n $syncedAccountsData = [];\n\n try {\n $syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [\n 'size' => count($missingCompanyIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedAccountsData = [];\n }\n\n return $existingAccountsData + $syncedAccountsData;\n }\n\n /**\n * Prepare associated contacts - find existing and sync missing ones\n * Returns mapping of CRM ID to DB ID\n */\n private function prepareAssociatedContacts(array $contactIds): array\n {\n // Find which contacts already exist (lean covering-index lookup)\n $existingContactsData = $this->crmEntityRepository\n ->getExistingContactIdsMap($this->config, $contactIds);\n\n $missingContactIds = array_diff($contactIds, array_keys($existingContactsData));\n\n if (empty($missingContactIds)) {\n return $existingContactsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [\n 'teamId' => $this->team->getUuid(),\n 'total_contacts' => count($contactIds),\n 'existing_contacts' => count($existingContactsData),\n 'missing_contacts' => count($missingContactIds),\n ]);\n\n // Sync missing contacts using batch API\n try {\n $syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [\n 'size' => count($missingContactIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedContactsData = [];\n }\n\n return $existingContactsData + $syncedContactsData;\n }\n\n private function batchSyncCrmObjects(string $objectType, array $crmIds): array\n {\n $syncObjects = [];\n $crmObjectIds = array_values($crmIds);\n\n foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {\n try {\n $objects = $objectType === 'companies' ?\n $this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :\n $this->client->getContactsByIds($chunk, $this->getContactFields());\n\n foreach ($objects as $objectId => $objectData) {\n $this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [\n 'requested_count' => count($chunk),\n 'synced_count' => count($objects),\n ]);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [\n 'ids' => $chunk,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n return $syncObjects;\n }\n\n private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void\n {\n try {\n $object = $objectType === 'companies' ?\n $this->importAccount($objectData) :\n $this->importContact($objectData);\n\n if ($object) {\n $syncObjects[$object->getCrmProviderId()] = $object->getId();\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [\n 'id' => $objectId,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n /**\n * Prepare associations for a single opportunity\n *\n * The return value is an array with the following structure:\n * [\n * 'companies' => [\n * $companyCrmId => $companyId,\n * ...\n * ],\n * 'contacts' => [\n * $contactCrmId => $contactId,\n * ...\n * ],\n * 'account_id' => $accountId,\n * ]\n */\n private function prepareAssociationsForOpportunity(\n string $oppCrmId,\n array $companyAssociations,\n array $contactAssociations,\n array $associationsData\n ): array {\n $associations = [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n\n $oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];\n foreach ($oppCompanyIds as $companyCrmId) {\n if (isset($associationsData['company_id_mappings'][$companyCrmId])) {\n $associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];\n\n // Set primary account (first company becomes primary account)\n if ($associations['account_id'] === null) {\n $associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];\n }\n }\n }\n\n $oppContactIds = $contactAssociations[$oppCrmId] ?? [];\n foreach ($oppContactIds as $contactCrmId) {\n if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {\n $associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];\n }\n }\n\n return $associations;\n }\n\n /**\n * Update only associations for an opportunity\n */\n private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void\n {\n // Update contact associations\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n // Update company (account) associations\n $this->updateOpportunityAccount($opportunity, $associations['account_id']);\n }\n\n /**\n * Remove all contact associations from an opportunity\n */\n private function removeAllOpportunityContacts(Opportunity $opportunity): void\n {\n $currentCount = (int) $opportunity->contacts()->count();\n\n if ($currentCount > 0) {\n $opportunity->contacts()->detach();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_count' => $currentCount,\n ]);\n }\n }\n\n private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void\n {\n if ($accountId === null) {\n // No account ID provided - keep current account\n return;\n }\n\n $currentAccountId = $opportunity->getAccountId();\n\n // Only update if account has changed\n if ($currentAccountId !== $accountId) {\n $opportunity->account_id = $accountId;\n $opportunity->save();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [\n 'opportunity_id' => $opportunity->getId(),\n 'old_account_id' => $currentAccountId,\n 'new_account_id' => $accountId,\n ]);\n }\n }\n\n /**\n * Find existing opportunities by external IDs (OPTIMIZED VERSION)\n * Uses batch query for better performance\n */\n private function findExistingOpportunities(array $crmIds): Collection\n {\n return $this->crmEntityRepository\n ->findOpportunitiesByExternalIds($this->config, $crmIds);\n }\n\n private function processOpportunityBatch(array $opportunities): int\n {\n $syncedOpportunities = $this->importOpportunityBatch($opportunities);\n\n return count($syncedOpportunities['success'] ?? []);\n }\n\n /**\n * Convert single deal associations from HubSpot format to internal format\n * Handles both HubSpot SDK objects and array formats\n *\n * @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed\n *\n * @return array Processed associations with DB IDs\n */\n private function convertDealAssociations(array $opportunityAssociations): array\n {\n $associations = $this->initializeAssociationsStructure();\n\n if (empty($opportunityAssociations)) {\n return $associations;\n }\n\n $associationIds = $this->extractAssociationIds($opportunityAssociations);\n\n $this->processCompanyAssociations($associationIds, $associations);\n $this->processContactAssociations($associationIds, $associations);\n\n return $associations;\n }\n\n private function initializeAssociationsStructure(): array\n {\n return [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n }\n\n private function extractAssociationIds(array $opportunityAssociations): array\n {\n $associationIds = [];\n\n foreach ($opportunityAssociations as $type => $associationData) {\n if (! empty($associationData)) {\n $associationIds[$type] = $this->convertSingleDealAssociations($associationData);\n }\n }\n\n return $associationIds;\n }\n\n private function processCompanyAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['companies'])) {\n return;\n }\n\n $companyId = $associationIds['companies'][0];\n $account = $this->findOrSyncAccount($companyId);\n\n if ($account instanceof Account) {\n $associations['companies'][$companyId] = $account->getId();\n $associations['account_id'] = $account->getId();\n }\n }\n\n private function processContactAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['contacts'])) {\n return;\n }\n\n foreach ($associationIds['contacts'] as $contactId) {\n $contact = $this->findOrSyncContact($contactId);\n\n if ($contact instanceof Contact) {\n $associations['contacts'][$contactId] = $contact->getId();\n }\n }\n }\n\n private function findOrSyncAccount(string $companyId): ?Account\n {\n $account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);\n\n if (! $account instanceof Account) {\n $account = $this->syncAccount($companyId);\n }\n\n return $account;\n }\n\n private function findOrSyncContact(string $contactId): ?Contact\n {\n $contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);\n\n if (! $contact instanceof Contact) {\n $contact = $this->syncContact($contactId);\n }\n\n return $contact;\n }\n\n private function convertSingleDealAssociations($opportunityAssociations = null): array\n {\n $associationData = [];\n\n if ($opportunityAssociations === null) {\n return $associationData;\n }\n\n // Handle array input (from extractAssociationIds)\n if (is_array($opportunityAssociations)) {\n return $opportunityAssociations;\n }\n\n // Handle CollectionResponseAssociatedId object\n if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {\n foreach ($opportunityAssociations->getResults() as $association) {\n $associationData[] = $association->getId();\n }\n }\n\n return $associationData;\n }\n\n private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity\n {\n if (empty($crmData['properties'])) {\n return null;\n }\n\n $crmId = (string) $crmData['id'];\n $properties = $crmData['properties'];\n $associations = $crmData['associations'] ?? [];\n\n $opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(\n $this->config,\n $crmId\n );\n\n if ($opportunityExists) {\n return $this->updateOpportunity($crmId, $properties, $associations);\n }\n\n return $this->createOpportunity($crmId, $properties, $associations);\n }\n\n /**\n * Create new opportunity\n */\n private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n if (! $accountId) {\n return null;\n }\n\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n if (! $businessProcess) {\n return null;\n }\n\n $stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);\n if (! $stage) {\n return null;\n }\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n if ($opportunity->wasRecentlyCreated) {\n MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());\n }\n\n return $opportunity;\n }\n\n /**\n * Update existing opportunity\n */\n private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n $stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->updateOpportunityAssociations($opportunity, $associations);\n\n return $opportunity;\n }\n\n private function resolveAccountId(array $associations): ?int\n {\n if (! empty($associations['account_id'])) {\n return $associations['account_id'];\n }\n\n if (empty($associations)) {\n return null;\n }\n\n // Fallback: use first company as account (currently SDK returns one company)\n foreach ($associations['companies'] as $accountId) {\n return $accountId;\n }\n\n return null;\n }\n\n private function buildOpportunityData(\n array $properties,\n ?int $accountId,\n ?BusinessProcess $businessProcess,\n ?Stage $stage\n ): array {\n $ownerId = null;\n $profile = null;\n if (! empty($properties['hubspot_owner_id'])) {\n $ownerId = $properties['hubspot_owner_id'];\n $profile = $this->getCachedOwnerProfile((string) $ownerId);\n }\n\n $name = 'Unknown';\n if (isset($properties['dealname'])) {\n $name = mb_strimwidth($properties['dealname'], 0, 128);\n }\n\n $amount = $this->resolveAmount($properties);\n $currency = $properties['deal_currency_code'] ?? null;\n\n $closeDate = null;\n if (! empty($properties['closedate'])) {\n $closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');\n }\n\n $remotelyCreatedAt = null;\n if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {\n $date = $this->parseCleanDatetime($properties['createdate']);\n $remotelyCreatedAt = $date?->format('Y-m-d H:i:s');\n }\n\n $closedStages = $this->getClosedDealStages();\n $isWon = in_array($properties['dealstage'], $closedStages['won']);\n $isLost = in_array($properties['dealstage'], $closedStages['lost']);\n\n $data = [\n 'team_id' => $this->team->getId(),\n 'user_id' => $profile ? $profile->user_id : null,\n 'owner_id' => $ownerId,\n 'name' => $name,\n 'value' => ! empty($amount) ? $amount : null,\n 'currency_code' => CurrencyFormatter::formatCode($currency),\n 'close_date' => $closeDate,\n 'is_closed' => $isWon || $isLost,\n 'is_won' => $isWon,\n 'remotely_created_at' => $remotelyCreatedAt,\n 'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),\n 'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),\n ];\n\n if ($accountId) {\n $data['account_id'] = $accountId;\n }\n\n if ($stage) {\n $data['stage_id'] = $stage->id;\n }\n\n if ($businessProcess) {\n $recordType = $this->getCachedBusinessProcessRecordType($businessProcess);\n if ($recordType) {\n $data['record_type_id'] = $recordType->id;\n }\n }\n\n return $data;\n }\n\n private function getCachedOwnerProfile(string $ownerId): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $ownerId;\n if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {\n return $this->cachedOwnerProfiles[$cacheKey];\n }\n\n $profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);\n $this->cachedOwnerProfiles[$cacheKey] = $profile;\n\n return $profile;\n }\n\n private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId();\n if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {\n return $this->cachedRecordTypes[$cacheKey];\n }\n\n $recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);\n $this->cachedRecordTypes[$cacheKey] = $recordType;\n\n return $recordType;\n }\n\n private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess\n {\n if ($pipelineId === null) {\n return null;\n }\n\n $cacheKey = $this->getBusinessProcessCacheKey($pipelineId);\n if (isset($this->cachedBusinessProcesses[$cacheKey])) {\n return $this->cachedBusinessProcesses[$cacheKey];\n }\n\n $businessProcess = $this->getBusinessProcess($pipelineId);\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->importStages();\n $businessProcess = $this->getBusinessProcess($pipelineId);\n }\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->logger->info(\n '[HubSpot] Deal is not attached to a pipeline',\n [\n 'pipeline' => $pipelineId]\n );\n }\n\n $this->cachedBusinessProcesses[$cacheKey] = $businessProcess;\n\n return $businessProcess;\n }\n\n private function getBusinessProcess(string $pipelineId): ?BusinessProcess\n {\n return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);\n }\n\n private function getBusinessProcessCacheKey(string $pipelineId): string\n {\n return $this->config->getId() . '_' . $pipelineId;\n }\n\n private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage\n {\n if (empty($stageId)) {\n return null;\n }\n\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;\n if (isset($this->cachedStages[$cacheKey])) {\n return $this->cachedStages[$cacheKey];\n }\n\n $stage = $this->crmEntityRepository->getPipelineStageByConditions(\n $businessProcess,\n [\n 'crm_provider_id' => $stageId,\n 'type' => Stage::TYPE_OPPORTUNITY,\n ]\n );\n\n if ($stage === null) {\n $this->importStages(null, $stageId);\n }\n\n if ($stage === null) {\n $this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);\n }\n\n $this->cachedStages[$cacheKey] = $stage;\n\n return $stage;\n }\n\n private function resolveAmount(array $properties): ?string\n {\n $amount = null;\n if (! empty($properties['amount'])) {\n $amount = str_replace(',', '', $properties['amount']);\n }\n\n if ($this->config->hasDefaultCurrencyFieldSet()) {\n $valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();\n $amount = $properties[$valueFieldName] ?? $amount;\n }\n\n return $amount;\n }\n\n private function parseCleanDatetime(string $datetime): ?Carbon\n {\n // Treat pre-1980 values as invalid\n $minValidDate = Carbon::parse('1980-01-01 00:00:00');\n\n try {\n $date = Carbon::parse($datetime);\n\n if ($minValidDate->gt($date)) {\n return null;\n }\n\n return $date;\n } catch (Exception) {\n return null; // On parse error, treat as null\n }\n }\n\n private function resolveDealProbability(?string $stageProbability): int\n {\n if ($stageProbability === null) {\n return 0;\n }\n\n $probability = (float) $stageProbability;\n\n return $probability > 1 ? 0 : (int) ($probability * 100);\n }\n\n private function resolveForecastCategory(?string $forecastCategory): string\n {\n if (! $forecastCategory) {\n return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;\n }\n\n $forecastCategory = str_replace('_', ' ', $forecastCategory);\n\n return ucwords(strtolower($forecastCategory));\n }\n\n private function importExternalFieldData(array $properties, int $opportunityId): void\n {\n $this->importOpportunityCrmFieldData(\n $properties,\n $this->getCachedOpportunitySyncableFields(),\n $opportunityId\n );\n }\n\n private function getCachedOpportunitySyncableFields(): array\n {\n $cacheKey = (string) $this->config->getId();\n if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {\n $this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();\n }\n\n return $this->cachedOpportunitySyncableFields[$cacheKey];\n }\n\n private function importOpportunityContacts(Opportunity $opportunity, array $associations): void\n {\n // Handle empty or missing contact associations\n if (empty($associations)) {\n // Remove all existing contact associations if none provided\n $this->removeAllOpportunityContacts($opportunity);\n\n return;\n }\n\n // Use differential sync approach for better performance and accuracy\n $this->syncOpportunityContactsDifferential($opportunity, $associations);\n }\n\n /**\n * Sync opportunity contacts using differential approach\n * This compares current vs new associations and only makes necessary changes\n */\n private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void\n {\n $currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);\n $contactAssociationIds = array_keys($contactAssociations);\n\n $contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);\n $contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);\n\n if (empty($contactsToAdd) && empty($contactsToRemove)) {\n return;\n }\n\n $this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);\n\n $this->removeContactAssociations($opportunity, $contactsToRemove);\n $this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);\n }\n\n private function getCurrentContactCrmIds(Opportunity $opportunity): array\n {\n return $opportunity->contacts()\n ->pluck('contacts.crm_provider_id')\n ->toArray();\n }\n\n private function logContactAssociationChanges(\n Opportunity $opportunity,\n array $currentContactCrmIds,\n array $contactAssociations,\n array $contactsToAdd,\n array $contactsToRemove\n ): void {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [\n 'opportunity_id' => $opportunity->getId(),\n 'current_contacts' => $currentContactCrmIds,\n 'new_contacts' => $contactAssociations,\n 'contacts_to_add' => $contactsToAdd,\n 'contacts_to_remove' => $contactsToRemove,\n ]);\n }\n\n private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void\n {\n if (empty($contactsToRemove)) {\n return;\n }\n\n $contactsToDetach = $opportunity->contacts()\n ->whereIn('contacts.crm_provider_id', $contactsToRemove)\n ->pluck('contacts.id')\n ->toArray();\n\n if (! empty($contactsToDetach)) {\n $opportunity->contacts()->detach($contactsToDetach);\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_contact_crm_ids' => $contactsToRemove,\n 'removed_contact_count' => count($contactsToDetach),\n ]);\n }\n }\n\n private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void\n {\n if (empty($contactsToAdd)) {\n return;\n }\n\n $contactsAdded = [];\n foreach ($contactsToAdd as $crmId) {\n $id = $contactAssociations[$crmId];\n\n if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {\n $contactsAdded[] = $crmId;\n }\n }\n\n $this->logAddedContacts($opportunity, $contactsAdded);\n }\n\n private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool\n {\n try {\n return $this->performContactAttachment($opportunity, $id, $crmId);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [\n 'opportunity_id' => $opportunity->getId(),\n 'contact_crm_id' => $crmId,\n 'error' => $e->getMessage(),\n ]);\n\n return false;\n }\n }\n\n private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool\n {\n try {\n $opportunity->contacts()->attach($contactId, [\n 'crm_provider_id' => $crmId,\n ]);\n\n return true;\n } catch (\\Illuminate\\Database\\QueryException $e) {\n if (str_contains($e->getMessage(), 'Duplicate entry')) {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [\n 'contact_id' => $contactId,\n 'contact_crm_id' => $crmId,\n 'opportunity_id' => $opportunity->getId(),\n ]);\n\n return false;\n }\n\n throw $e;\n }\n }\n\n private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void\n {\n if (! empty($contactsAdded)) {\n $this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'added_contact_crm_ids' => $contactsAdded,\n 'added_contacts_count' => count($contactsAdded),\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1689271975849076535
|
-8493339382995643936
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
34
2
22
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use HubSpot\Client\Crm\Deals\Model\CollectionResponseAssociatedId;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Models\Account;
use Exception;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Jobs\Crm\MatchActivitiesToNewOpportunity;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\BusinessProcess;
use Jiminny\Exceptions\CrmException;
use Jiminny\Models\Opportunity;
use Illuminate\Support\Collection;
use Jiminny\Models\Stage;
use Jiminny\Repositories\Crm\CrmEntityRepository;
use Jiminny\Services\Crm\Hubspot\DealFieldsService;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\HubspotSingleSyncStrategy;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
use Jiminny\Services\Crm\OpportunitySyncStrategyResolver;
use Jiminny\Utils\CurrencyFormatter;
/**
* Optimized sync methods for better performance
* These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains
*/
trait OpportunitySyncTrait
{
private const int BATCH_SIZE = 100;
private const int BATCH_PROCESS_SIZE = 800;
protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;
protected CrmEntityRepository $crmEntityRepository;
protected DealFieldsService $dealFieldsService;
private ?array $cachedClosedDealStages = null;
private array $cachedBusinessProcesses = [];
private array $cachedStages = [];
/** @var array<string, array<string>> keyed by config id */
private array $cachedOpportunitySyncableFields = [];
/** @var array<string, mixed> keyed by configId:ownerId */
private array $cachedOwnerProfiles = [];
/** @var array<string, mixed> keyed by configId:businessProcessId */
private array $cachedRecordTypes = [];
public function syncOpportunities(array $parameters, ?string $strategy = null): int
{
$startTime = microtime(true);
$strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);
$parameters['config'] = $this->config;
$syncCount = 0;
$reportedTotal = 0;
$lastSyncedId = [];
$strategyNames = [];
try {
foreach ($strategies as $strategyName => $syncStrategy) {
$strategyNames[] = $strategyName;
$this->logger->info(
'[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,
['team' => $this->team->getId()]
);
$total = 0;
$lastId = null;
$buffer = [];
// HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies
foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {
$buffer[] = $hsOpportunity;
// process every 800 rows (fits < 1 000 association limit)
if (\count($buffer) >= self::BATCH_PROCESS_SIZE) {
$syncCount += $this->processOpportunityBatch($buffer);
$buffer = [];
}
}
// leftovers
if ($buffer) {
$syncCount += $this->processOpportunityBatch($buffer);
}
$reportedTotal += $total;
$lastSyncedId = $lastId;
}
} catch (\HubSpot\Client\Crm\Deals\ApiException | CrmException $e) {
$this->handleSyncException($e, $parameters);
}
$durationMs = round((microtime(true) - $startTime) * 1000, 2);
$this->logger->info(
'[HubSpot] Synced opportunities',
[
'team' => $this->team->getId(),
'strategies' => implode(',', $strategyNames),
'sync_count' => $syncCount,
'total' => $reportedTotal,
'last_synced_id' => $lastSyncedId,
'duration_ms' => $durationMs,
]
);
return $reportedTotal;
}
private function handleSyncException(\Throwable $e, array $parameters): void
{
if (($parameters['since'] ?? null) instanceof Carbon) {
$parameters['since'] = $parameters['since']->toDateTimeString();
}
$parameters['config'] = $this->config->getId();
$this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [
'teamId' => $this->team->getUuid(),
'parameters' => $parameters,
'reason' => $e->getMessage(),
]);
}
/**
* @inheritdoc
*/
public function syncOpportunity(string $crmId): ?Opportunity
{
$this->client->getOpportunityById($params['crm_id'], $fields);;
$strategy = $this->opportunitySyncStrategyResolver->resolve(
$this->config,
OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,
);
$parameters = [
'config' => $this->config,
'crm_id' => $crmId,
];
try {
if (! $strategy instanceof HubspotSingleSyncStrategy) {
throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');
}
$hsOpportunity = $strategy->fetchOpportunity($parameters);
} catch (\HubSpot\Client\Crm\Deals\ApiException $e) {
$this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [
'teamId' => $this->team->getUuid(),
'crmId' => $crmId,
'reason' => $e->getMessage(),
]);
return null;
}
$hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);
return $this->importOrUpdateOpportunity($hsOpportunity);
}
/**
* Process webhook-collected opportunity batches.
*
* Drains Redis sets containing company CRM IDs collected from webhook events
* and dispatches ImportOpportunityBatch jobs for batch processing.
*
* @return int Number of opportunity IDs dispatched to jobs
*/
public function batchSyncOpportunities(): int
{
$configId = $this->team->getCrmConfiguration()->getId();
return $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
}
/**
* Import a batch of opportunities by their CRM IDs.
* Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().
*
* @param array<string> $crmIds HubSpot deal CRM IDs
*
* @return array{success: array, failed_ids: array, errors?: array<string, string>}
*/
public function importOpportunityBatchByIds(array $crmIds): array
{
$fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);
$allDeals = [];
foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {
$deals = $this->client->getOpportunitiesByIds($chunk, $fields);
foreach ($deals as $deal) {
$allDeals[] = $deal;
}
}
// IDs not returned by HubSpot are likely deleted or inaccessible deals.
// These are not failures — retrying won't bring them back.
$fetchedIds = array_map('strval', array_column($allDeals, 'id'));
$notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));
if (! empty($notFoundIds)) {
$this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [
'teamId' => $this->team->getId(),
'notFoundCount' => \count($notFoundIds),
'notFoundIds' => $notFoundIds,
'requestedCount' => \count($crmIds),
'fetchedCount' => \count($allDeals),
]);
}
if (empty($allDeals)) {
return ['success' => [], 'failed_ids' => []];
}
return $this->importOpportunityBatch($allDeals);
}
private function getClosedDealStages(): array
{
if ($this->cachedClosedDealStages !== null) {
return $this->cachedClosedDealStages;
}
$stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);
$data = [
'lost' => [],
'won' => [],
];
foreach ($stages as $stage) {
if ($stage->probability == 0.00) {
$data['lost'][] = $stage->crm_provider_id;
}
if ($stage->probability == 100.00) {
$data['won'][] = $stage->crm_provider_id;
}
}
$this->cachedClosedDealStages = $data;
return $data;
}
/**
* Import deals into the database with pre-fetched associations.
*
* API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT
* caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()
* where Laravel retries the whole job with backoff. After all retries exhausted,
* failed() requeues all IDs to Redis.
*
* The per-deal loop catches exceptions individually. A deal can end up in three states:
* - success: imported/updated successfully
* - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)
* These are permanent issues — retrying won't fix them.
* - skipped (null): missing dependencies (no account, unknown pipeline/stage).
* This is acceptable — the deal cannot be imported until those exist.
*/
private function importOpportunityBatch(array $deals): array
{
$syncedOpportunities = [
'success' => [],
'failed_ids' => [],
];
$dealIds = array_column($deals, 'id');
$batchStart = microtime(true);
$slowDeals = [];
// Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the
// queue job retries the whole batch and eventually requeues all deal IDs back to Redis.
try {
$companyAssocStart = microtime(true);
$companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');
$companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);
$contactAssocStart = microtime(true);
$contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');
$contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);
$prepareStart = microtime(true);
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
$prepareTimings = [];
$associationsData = $this->prepareAssociatedEntities(
$companyAssociations,
$contactAssociations,
$prepareTimings
);
$prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);
$missingCompanies = count(array_diff(
$allCompanyIds,
array_keys($associationsData['company_id_mappings'] ?? [])
));
$missingContacts = count(array_diff(
$allContactIds,
array_keys($associationsData['contact_id_mappings'] ?? [])
));
$existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(
$this->config,
array_map('strval', $dealIds)
);
$existingCrmIdSet = array_flip($existingCrmIds);
} catch (\Throwable $e) {
$this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [
'teamId' => $this->team->getId(),
'dealCount' => count($dealIds),
'error' => $e->getMessage(),
]);
throw $e;
}
$loopStart = microtime(true);
foreach ($deals as $deal) {
$dealStart = microtime(true);
try {
$deal['associations'] = $this->prepareAssociationsForOpportunity(
$deal['id'],
$companyAssociations,
$contactAssociations,
$associationsData
);
$syncedOpportunity = $this->importOrUpdateOpportunity(
$deal,
isset($existingCrmIdSet[(string) $deal['id']])
);
if ($syncedOpportunity) {
$syncedOpportunities['success'][] = $syncedOpportunity;
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [
'teamId' => $this->team->getId(),
'crmId' => $deal['id'],
'error' => $e->getMessage(),
]);
$syncedOpportunities['failed_ids'][] = $deal['id'];
$syncedOpportunities['errors'][$deal['id']] = $e->getMessage();
}
$dealMs = (int) round((microtime(true) - $dealStart) * 1000);
if ($dealMs > 1000) {
$slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];
}
}
$loopMs = (int) round((microtime(true) - $loopStart) * 1000);
$totalMs = (int) round((microtime(true) - $batchStart) * 1000);
$this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [
'teamId' => $this->team->getId(),
'deal_count' => count($deals),
'total_ms' => $totalMs,
'company_assoc_api_ms' => $companyAssocMs,
'contact_assoc_api_ms' => $contactAssocMs,
'prepare_entities_ms' => $prepareMs,
'prepare_accounts_ms' => $prepareTimings['accounts_ms'],
'prepare_contacts_ms' => $prepareTimings['contacts_ms'],
'total_companies' => count($allCompanyIds),
'missing_companies' => $missingCompanies,
'total_contacts' => count($allContactIds),
'missing_contacts' => $missingContacts,
'deals_loop_ms' => $loopMs,
'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,
'slow_deals_count' => count($slowDeals),
'slow_deals' => array_slice($slowDeals, 0, 10),
]);
return $syncedOpportunities;
}
/**
* Prepare associated entities for opportunities with optimized batch processing
* Returns structured data with CRM ID to DB ID mappings for each opportunity
*/
private function prepareAssociatedEntities(
array $companyAssociations,
array $contactAssociations,
array &$timings = []
): array {
// Step 1: Collect all unique company and contact IDs from associations
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
// Step 2: Batch sync missing entities and get CRM ID to DB ID mappings
$companyIdMappings = [];
$contactIdMappings = [];
$accountsMs = 0;
$contactsMs = 0;
if (! empty($allCompanyIds)) {
$start = microtime(true);
$companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);
$accountsMs = (int) round((microtime(true) - $start) * 1000);
}
if (! empty($allContactIds)) {
$start = microtime(true);
$contactIdMappings = $this->prepareAssociatedContacts($allContactIds);
$contactsMs = (int) round((microtime(true) - $start) * 1000);
}
$timings = [
'accounts_ms' => $accountsMs,
'contacts_ms' => $contactsMs,
];
return [
'company_id_mappings' => $companyIdMappings,
'contact_id_mappings' => $contactIdMappings,
];
}
/**
* Flatten association data to get unique IDs
*/
private function flattenAssociationIds(array $associations): array
{
$ids = [];
foreach ($associations as $dealAssociations) {
if (is_array($dealAssociations)) {
foreach ($dealAssociations as $id) {
$ids[$id] = true;
}
}
}
return array_keys($ids);
}
/**
* Batch sync missing accounts
*/
private function prepareAssociatedAccounts(array $companyIds): array
{
// Find which accounts already exist (lean covering-index lookup)
$existingAccountsData = $this->crmEntityRepository
->getExistingAccountIdsMap($this->config, $companyIds);
$missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));
if (empty($missingCompanyIds)) {
return $existingAccountsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [
'teamId' => $this->team->getUuid(),
'total_companies' => count($companyIds),
'existing_companies' => count($existingAccountsData),
'missing_companies' => count($missingCompanyIds),
]);
// we already have limit on opportunity ids count
// Initialize variable before try block
$syncedAccountsData = [];
try {
$syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [
'size' => count($missingCompanyIds),
'error' => $e->getMessage(),
]);
$syncedAccountsData = [];
}
return $existingAccountsData + $syncedAccountsData;
}
/**
* Prepare associated contacts - find existing and sync missing ones
* Returns mapping of CRM ID to DB ID
*/
private function prepareAssociatedContacts(array $contactIds): array
{
// Find which contacts already exist (lean covering-index lookup)
$existingContactsData = $this->crmEntityRepository
->getExistingContactIdsMap($this->config, $contactIds);
$missingContactIds = array_diff($contactIds, array_keys($existingContactsData));
if (empty($missingContactIds)) {
return $existingContactsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [
'teamId' => $this->team->getUuid(),
'total_contacts' => count($contactIds),
'existing_contacts' => count($existingContactsData),
'missing_contacts' => count($missingContactIds),
]);
// Sync missing contacts using batch API
try {
$syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [
'size' => count($missingContactIds),
'error' => $e->getMessage(),
]);
$syncedContactsData = [];
}
return $existingContactsData + $syncedContactsData;
}
private function batchSyncCrmObjects(string $objectType, array $crmIds): array
{
$syncObjects = [];
$crmObjectIds = array_values($crmIds);
foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {
try {
$objects = $objectType === 'companies' ?
$this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :
$this->client->getContactsByIds($chunk, $this->getContactFields());
foreach ($objects as $objectId => $objectData) {
$this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [
'requested_count' => count($chunk),
'synced_count' => count($objects),
]);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [
'ids' => $chunk,
'error' => $e->getMessage(),
]);
}
}
return $syncObjects;
}
private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void
{
try {
$object = $objectType === 'companies' ?
$this->importAccount($objectData) :
$this->importContact($objectData);
if ($object) {
$syncObjects[$object->getCrmProviderId()] = $object->getId();
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [
'id' => $objectId,
'error' => $e->getMessage(),
]);
}
}
/**
* Prepare associations for a single opportunity
*
* The return value is an array with the following structure:
* [
* 'companies' => [
* $companyCrmId => $companyId,
* ...
* ],
* 'contacts' => [
* $contactCrmId => $contactId,
* ...
* ],
* 'account_id' => $accountId,
* ]
*/
private function prepareAssociationsForOpportunity(
string $oppCrmId,
array $companyAssociations,
array $contactAssociations,
array $associationsData
): array {
$associations = [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
$oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];
foreach ($oppCompanyIds as $companyCrmId) {
if (isset($associationsData['company_id_mappings'][$companyCrmId])) {
$associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];
// Set primary account (first company becomes primary account)
if ($associations['account_id'] === null) {
$associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];
}
}
}
$oppContactIds = $contactAssociations[$oppCrmId] ?? [];
foreach ($oppContactIds as $contactCrmId) {
if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {
$associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];
}
}
return $associations;
}
/**
* Update only associations for an opportunity
*/
private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void
{
// Update contact associations
$this->importOpportunityContacts($opportunity, $associations['contacts']);
// Update company (account) associations
$this->updateOpportunityAccount($opportunity, $associations['account_id']);
}
/**
* Remove all contact associations from an opportunity
*/
private function removeAllOpportunityContacts(Opportunity $opportunity): void
{
$currentCount = (int) $opportunity->contacts()->count();
if ($currentCount > 0) {
$opportunity->contacts()->detach();
$this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_count' => $currentCount,
]);
}
}
private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void
{
if ($accountId === null) {
// No account ID provided - keep current account
return;
}
$currentAccountId = $opportunity->getAccountId();
// Only update if account has changed
if ($currentAccountId !== $accountId) {
$opportunity->account_id = $accountId;
$opportunity->save();
$this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [
'opportunity_id' => $opportunity->getId(),
'old_account_id' => $currentAccountId,
'new_account_id' => $accountId,
]);
}
}
/**
* Find existing opportunities by external IDs (OPTIMIZED VERSION)
* Uses batch query for better performance
*/
private function findExistingOpportunities(array $crmIds): Collection
{
return $this->crmEntityRepository
->findOpportunitiesByExternalIds($this->config, $crmIds);
}
private function processOpportunityBatch(array $opportunities): int
{
$syncedOpportunities = $this->importOpportunityBatch($opportunities);
return count($syncedOpportunities['success'] ?? []);
}
/**
* Convert single deal associations from HubSpot format to internal format
* Handles both HubSpot SDK objects and array formats
*
* @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed
*
* @return array Processed associations with DB IDs
*/
private function convertDealAssociations(array $opportunityAssociations): array
{
$associations = $this->initializeAssociationsStructure();
if (empty($opportunityAssociations)) {
return $associations;
}
$associationIds = $this->extractAssociationIds($opportunityAssociations);
$this->processCompanyAssociations($associationIds, $associations);
$this->processContactAssociations($associationIds, $associations);
return $associations;
}
private function initializeAssociationsStructure(): array
{
return [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
}
private function extractAssociationIds(array $opportunityAssociations): array
{
$associationIds = [];
foreach ($opportunityAssociations as $type => $associationData) {
if (! empty($associationData)) {
$associationIds[$type] = $this->convertSingleDealAssociations($associationData);
}
}
return $associationIds;
}
private function processCompanyAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['companies'])) {
return;
}
$companyId = $associationIds['companies'][0];
$account = $this->findOrSyncAccount($companyId);
if ($account instanceof Account) {
$associations['companies'][$companyId] = $account->getId();
$associations['account_id'] = $account->getId();
}
}
private function processContactAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['contacts'])) {
return;
}
foreach ($associationIds['contacts'] as $contactId) {
$contact = $this->findOrSyncContact($contactId);
if ($contact instanceof Contact) {
$associations['contacts'][$contactId] = $contact->getId();
}
}
}
private function findOrSyncAccount(string $companyId): ?Account
{
$account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);
if (! $account instanceof Account) {
$account = $this->syncAccount($companyId);
}
return $account;
}
private function findOrSyncContact(string $contactId): ?Contact
{
$contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);
if (! $contact instanceof Contact) {
$contact = $this->syncContact($contactId);
}
return $contact;
}
private function convertSingleDealAssociations($opportunityAssociations = null): array
{
$associationData = [];
if ($opportunityAssociations === null) {
return $associationData;
}
// Handle array input (from extractAssociationIds)
if (is_array($opportunityAssociations)) {
return $opportunityAssociations;
}
// Handle CollectionResponseAssociatedId object
if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {
foreach ($opportunityAssociations->getResults() as $association) {
$associationData[] = $association->getId();
}
}
return $associationData;
}
private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity
{
if (empty($crmData['properties'])) {
return null;
}
$crmId = (string) $crmData['id'];
$properties = $crmData['properties'];
$associations = $crmData['associations'] ?? [];
$opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(
$this->config,
$crmId
);
if ($opportunityExists) {
return $this->updateOpportunity($crmId, $properties, $associations);
}
return $this->createOpportunity($crmId, $properties, $associations);
}
/**
* Create new opportunity
*/
private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity
{
$accountId = $this->resolveAccountId($associations);
if (! $accountId) {
return null;
}
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
if (! $businessProcess) {
return null;
}
$stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);
if (! $stage) {
return null;
}
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->importOpportunityContacts($opportunity, $associations['contacts']);
if ($opportunity->wasRecentlyCreated) {
MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());
}
return $opportunity;
}
/**
* Update existing opportunity
*/
private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity
{
$accountId = $this->resolveAccountId($associations);
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->updateOpportunityAssociations($opportunity, $associations);
return $opportunity;
}
private function resolveAccountId(array $associations): ?int
{
if (! empty($associations['account_id'])) {
return $associations['account_id'];
}
if (empty($associations)) {
return null;
}
// Fallback: use first company as account (currently SDK returns one company)
foreach ($associations['companies'] as $accountId) {
return $accountId;
}
return null;
}
private function buildOpportunityData(
array $properties,
?int $accountId,
?BusinessProcess $businessProcess,
?Stage $stage
): array {
$ownerId = null;
$profile = null;
if (! empty($properties['hubspot_owner_id'])) {
$ownerId = $properties['hubspot_owner_id'];
$profile = $this->getCachedOwnerProfile((string) $ownerId);
}
$name = 'Unknown';
if (isset($properties['dealname'])) {
$name = mb_strimwidth($properties['dealname'], 0, 128);
}
$amount = $this->resolveAmount($properties);
$currency = $properties['deal_currency_code'] ?? null;
$closeDate = null;
if (! empty($properties['closedate'])) {
$closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');
}
$remotelyCreatedAt = null;
if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {
$date = $this->parseCleanDatetime($properties['createdate']);
$remotelyCreatedAt = $date?->format('Y-m-d H:i:s');
}
$closedStages = $this->getClosedDealStages();
$isWon = in_array($properties['dealstage'], $closedStages['won']);
$isLost = in_array($properties['dealstage'], $closedStages['lost']);
$data = [
'team_id' => $this->team->getId(),
'user_id' => $profile ? $profile->user_id : null,
'owner_id' => $ownerId,
'name' => $name,
'value' => ! empty($amount) ? $amount : null,
'currency_code' => CurrencyFormatter::formatCode($currency),
'close_date' => $closeDate,
'is_closed' => $isWon || $isLost,
'is_won' => $isWon,
'remotely_created_at' => $remotelyCreatedAt,
'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),
'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),
];
if ($accountId) {
$data['account_id'] = $accountId;
}
if ($stage) {
$data['stage_id'] = $stage->id;
}
if ($businessProcess) {
$recordType = $this->getCachedBusinessProcessRecordType($businessProcess);
if ($recordType) {
$data['record_type_id'] = $recordType->id;
}
}
return $data;
}
private function getCachedOwnerProfile(string $ownerId): mixed
{
$cacheKey = $this->config->getId() . ':' . $ownerId;
if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {
return $this->cachedOwnerProfiles[$cacheKey];
}
$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);
$this->cachedOwnerProfiles[$cacheKey] = $profile;
return $profile;
}
private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed
{
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId();
if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {
return $this->cachedRecordTypes[$cacheKey];
}
$recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);
$this->cachedRecordTypes[$cacheKey] = $recordType;
return $recordType;
}
private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess
{
if ($pipelineId === null) {
return null;
}
$cacheKey = $this->getBusinessProcessCacheKey($pipelineId);
if (isset($this->cachedBusinessProcesses[$cacheKey])) {
return $this->cachedBusinessProcesses[$cacheKey];
}
$businessProcess = $this->getBusinessProcess($pipelineId);
if (! $businessProcess instanceof BusinessProcess) {
$this->importStages();
$businessProcess = $this->getBusinessProcess($pipelineId);
}
if (! $businessProcess instanceof BusinessProcess) {
$this->logger->info(
'[HubSpot] Deal is not attached to a pipeline',
[
'pipeline' => $pipelineId]
);
}
$this->cachedBusinessProcesses[$cacheKey] = $businessProcess;
return $businessProcess;
}
private function getBusinessProcess(string $pipelineId): ?BusinessProcess
{
return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);
}
private function getBusinessProcessCacheKey(string $pipelineId): string
{
return $this->config->getId() . '_' . $pipelineId;
}
private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage
{
if (empty($stageId)) {
return null;
}
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;
if (isset($this->cachedStages[$cacheKey])) {
return $this->cachedStages[$cacheKey];
}
$stage = $this->crmEntityRepository->getPipelineStageByConditions(
$businessProcess,
[
'crm_provider_id' => $stageId,
'type' => Stage::TYPE_OPPORTUNITY,
]
);
if ($stage === null) {
$this->importStages(null, $stageId);
}
if ($stage === null) {
$this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);
}
$this->cachedStages[$cacheKey] = $stage;
return $stage;
}
private function resolveAmount(array $properties): ?string
{
$amount = null;
if (! empty($properties['amount'])) {
$amount = str_replace(',', '', $properties['amount']);
}
if ($this->config->hasDefaultCurrencyFieldSet()) {
$valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();
$amount = $properties[$valueFieldName] ?? $amount;
}
return $amount;
}
private function parseCleanDatetime(string $datetime): ?Carbon
{
// Treat pre-1980 values as invalid
$minValidDate = Carbon::parse('1980-01-01 00:00:00');
try {
$date = Carbon::parse($datetime);
if ($minValidDate->gt($date)) {
return null;
}
return $date;
} catch (Exception) {
return null; // On parse error, treat as null
}
}
private function resolveDealProbability(?string $stageProbability): int
{
if ($stageProbability === null) {
return 0;
}
$probability = (float) $stageProbability;
return $probability > 1 ? 0 : (int) ($probability * 100);
}
private function resolveForecastCategory(?string $forecastCategory): string
{
if (! $forecastCategory) {
return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;
}
$forecastCategory = str_replace('_', ' ', $forecastCategory);
return ucwords(strtolower($forecastCategory));
}
private function importExternalFieldData(array $properties, int $opportunityId): void
{
$this->importOpportunityCrmFieldData(
$properties,
$this->getCachedOpportunitySyncableFields(),
$opportunityId
);
}
private function getCachedOpportunitySyncableFields(): array
{
$cacheKey = (string) $this->config->getId();
if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {
$this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();
}
return $this->cachedOpportunitySyncableFields[$cacheKey];
}
private function importOpportunityContacts(Opportunity $opportunity, array $associations): void
{
// Handle empty or missing contact associations
if (empty($associations)) {
// Remove all existing contact associations if none provided
$this->removeAllOpportunityContacts($opportunity);
return;
}
// Use differential sync approach for better performance and accuracy
$this->syncOpportunityContactsDifferential($opportunity, $associations);
}
/**
* Sync opportunity contacts using differential approach
* This compares current vs new associations and only makes necessary changes
*/
private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void
{
$currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);
$contactAssociationIds = array_keys($contactAssociations);
$contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);
$contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);
if (empty($contactsToAdd) && empty($contactsToRemove)) {
return;
}
$this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);
$this->removeContactAssociations($opportunity, $contactsToRemove);
$this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);
}
private function getCurrentContactCrmIds(Opportunity $opportunity): array
{
return $opportunity->contacts()
->pluck('contacts.crm_provider_id')
->toArray();
}
private function logContactAssociationChanges(
Opportunity $opportunity,
array $currentContactCrmIds,
array $contactAssociations,
array $contactsToAdd,
array $contactsToRemove
): void {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [
'opportunity_id' => $opportunity->getId(),
'current_contacts' => $currentContactCrmIds,
'new_contacts' => $contactAssociations,
'contacts_to_add' => $contactsToAdd,
'contacts_to_remove' => $contactsToRemove,
]);
}
private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void
{
if (empty($contactsToRemove)) {
return;
}
$contactsToDetach = $opportunity->contacts()
->whereIn('contacts.crm_provider_id', $contactsToRemove)
->pluck('contacts.id')
->toArray();
if (! empty($contactsToDetach)) {
$opportunity->contacts()->detach($contactsToDetach);
$this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_contact_crm_ids' => $contactsToRemove,
'removed_contact_count' => count($contactsToDetach),
]);
}
}
private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void
{
if (empty($contactsToAdd)) {
return;
}
$contactsAdded = [];
foreach ($contactsToAdd as $crmId) {
$id = $contactAssociations[$crmId];
if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {
$contactsAdded[] = $crmId;
}
}
$this->logAddedContacts($opportunity, $contactsAdded);
}
private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool
{
try {
return $this->performContactAttachment($opportunity, $id, $crmId);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [
'opportunity_id' => $opportunity->getId(),
'contact_crm_id' => $crmId,
'error' => $e->getMessage(),
]);
return false;
}
}
private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool
{
try {
$opportunity->contacts()->attach($contactId, [
'crm_provider_id' => $crmId,
]);
return true;
} catch (\Illuminate\Database\QueryException $e) {
if (str_contains($e->getMessage(), 'Duplicate entry')) {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [
'contact_id' => $contactId,
'contact_crm_id' => $crmId,
'opportunity_id' => $opportunity->getId(),
]);
return false;
}
throw $e;
}
}
private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void
{
if (! empty($contactsAdded)) {
$this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [
'opportunity_id' => $opportunity->getId(),
'added_contact_crm_ids' => $contactsAdded,
'added_contacts_count' => count($contactsAdded),
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
2983
|
NULL
|
NULL
|
NULL
|
|
2986
|
120
|
1
|
2026-05-07T11:55:07.693552+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154907693_m2.jpg...
|
PhpStorm
|
faVsco.js – OpportunitySyncTrait.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
34
2
22
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use HubSpot\Client\Crm\Deals\Model\CollectionResponseAssociatedId;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Models\Account;
use Exception;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Jobs\Crm\MatchActivitiesToNewOpportunity;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\BusinessProcess;
use Jiminny\Exceptions\CrmException;
use Jiminny\Models\Opportunity;
use Illuminate\Support\Collection;
use Jiminny\Models\Stage;
use Jiminny\Repositories\Crm\CrmEntityRepository;
use Jiminny\Services\Crm\Hubspot\DealFieldsService;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\HubspotSingleSyncStrategy;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
use Jiminny\Services\Crm\OpportunitySyncStrategyResolver;
use Jiminny\Utils\CurrencyFormatter;
/**
* Optimized sync methods for better performance
* These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains
*/
trait OpportunitySyncTrait
{
private const int BATCH_SIZE = 100;
private const int BATCH_PROCESS_SIZE = 800;
protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;
protected CrmEntityRepository $crmEntityRepository;
protected DealFieldsService $dealFieldsService;
private ?array $cachedClosedDealStages = null;
private array $cachedBusinessProcesses = [];
private array $cachedStages = [];
/** @var array<string, array<string>> keyed by config id */
private array $cachedOpportunitySyncableFields = [];
/** @var array<string, mixed> keyed by configId:ownerId */
private array $cachedOwnerProfiles = [];
/** @var array<string, mixed> keyed by configId:businessProcessId */
private array $cachedRecordTypes = [];
public function syncOpportunities(array $parameters, ?string $strategy = null): int
{
$startTime = microtime(true);
$strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);
$parameters['config'] = $this->config;
$syncCount = 0;
$reportedTotal = 0;
$lastSyncedId = [];
$strategyNames = [];
try {
foreach ($strategies as $strategyName => $syncStrategy) {
$strategyNames[] = $strategyName;
$this->logger->info(
'[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,
['team' => $this->team->getId()]
);
$total = 0;
$lastId = null;
$buffer = [];
// HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies
foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {
$buffer[] = $hsOpportunity;
// process every 800 rows (fits < 1 000 association limit)
if (\count($buffer) >= self::BATCH_PROCESS_SIZE) {
$syncCount += $this->processOpportunityBatch($buffer);
$buffer = [];
}
}
// leftovers
if ($buffer) {
$syncCount += $this->processOpportunityBatch($buffer);
}
$reportedTotal += $total;
$lastSyncedId = $lastId;
}
} catch (\HubSpot\Client\Crm\Deals\ApiException | CrmException $e) {
$this->handleSyncException($e, $parameters);
}
$durationMs = round((microtime(true) - $startTime) * 1000, 2);
$this->logger->info(
'[HubSpot] Synced opportunities',
[
'team' => $this->team->getId(),
'strategies' => implode(',', $strategyNames),
'sync_count' => $syncCount,
'total' => $reportedTotal,
'last_synced_id' => $lastSyncedId,
'duration_ms' => $durationMs,
]
);
return $reportedTotal;
}
private function handleSyncException(\Throwable $e, array $parameters): void
{
if (($parameters['since'] ?? null) instanceof Carbon) {
$parameters['since'] = $parameters['since']->toDateTimeString();
}
$parameters['config'] = $this->config->getId();
$this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [
'teamId' => $this->team->getUuid(),
'parameters' => $parameters,
'reason' => $e->getMessage(),
]);
}
/**
* @inheritdoc
*/
public function syncOpportunity(string $crmId): ?Opportunity
{
$this->client->getOpportunityById($params['crm_id'], $fields);;
$strategy = $this->opportunitySyncStrategyResolver->resolve(
$this->config,
OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,
);
$parameters = [
'config' => $this->config,
'crm_id' => $crmId,
];
try {
if (! $strategy instanceof HubspotSingleSyncStrategy) {
throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');
}
$hsOpportunity = $strategy->fetchOpportunity($parameters);
} catch (\HubSpot\Client\Crm\Deals\ApiException $e) {
$this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [
'teamId' => $this->team->getUuid(),
'crmId' => $crmId,
'reason' => $e->getMessage(),
]);
return null;
}
$hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);
return $this->importOrUpdateOpportunity($hsOpportunity);
}
/**
* Process webhook-collected opportunity batches.
*
* Drains Redis sets containing company CRM IDs collected from webhook events
* and dispatches ImportOpportunityBatch jobs for batch processing.
*
* @return int Number of opportunity IDs dispatched to jobs
*/
public function batchSyncOpportunities(): int
{
$configId = $this->team->getCrmConfiguration()->getId();
return $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
}
/**
* Import a batch of opportunities by their CRM IDs.
* Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().
*
* @param array<string> $crmIds HubSpot deal CRM IDs
*
* @return array{success: array, failed_ids: array, errors?: array<string, string>}
*/
public function importOpportunityBatchByIds(array $crmIds): array
{
$fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);
$allDeals = [];
foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {
$deals = $this->client->getOpportunitiesByIds($chunk, $fields);
foreach ($deals as $deal) {
$allDeals[] = $deal;
}
}
// IDs not returned by HubSpot are likely deleted or inaccessible deals.
// These are not failures — retrying won't bring them back.
$fetchedIds = array_map('strval', array_column($allDeals, 'id'));
$notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));
if (! empty($notFoundIds)) {
$this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [
'teamId' => $this->team->getId(),
'notFoundCount' => \count($notFoundIds),
'notFoundIds' => $notFoundIds,
'requestedCount' => \count($crmIds),
'fetchedCount' => \count($allDeals),
]);
}
if (empty($allDeals)) {
return ['success' => [], 'failed_ids' => []];
}
return $this->importOpportunityBatch($allDeals);
}
private function getClosedDealStages(): array
{
if ($this->cachedClosedDealStages !== null) {
return $this->cachedClosedDealStages;
}
$stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);
$data = [
'lost' => [],
'won' => [],
];
foreach ($stages as $stage) {
if ($stage->probability == 0.00) {
$data['lost'][] = $stage->crm_provider_id;
}
if ($stage->probability == 100.00) {
$data['won'][] = $stage->crm_provider_id;
}
}
$this->cachedClosedDealStages = $data;
return $data;
}
/**
* Import deals into the database with pre-fetched associations.
*
* API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT
* caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()
* where Laravel retries the whole job with backoff. After all retries exhausted,
* failed() requeues all IDs to Redis.
*
* The per-deal loop catches exceptions individually. A deal can end up in three states:
* - success: imported/updated successfully
* - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)
* These are permanent issues — retrying won't fix them.
* - skipped (null): missing dependencies (no account, unknown pipeline/stage).
* This is acceptable — the deal cannot be imported until those exist.
*/
private function importOpportunityBatch(array $deals): array
{
$syncedOpportunities = [
'success' => [],
'failed_ids' => [],
];
$dealIds = array_column($deals, 'id');
$batchStart = microtime(true);
$slowDeals = [];
// Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the
// queue job retries the whole batch and eventually requeues all deal IDs back to Redis.
try {
$companyAssocStart = microtime(true);
$companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');
$companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);
$contactAssocStart = microtime(true);
$contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');
$contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);
$prepareStart = microtime(true);
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
$prepareTimings = [];
$associationsData = $this->prepareAssociatedEntities(
$companyAssociations,
$contactAssociations,
$prepareTimings
);
$prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);
$missingCompanies = count(array_diff(
$allCompanyIds,
array_keys($associationsData['company_id_mappings'] ?? [])
));
$missingContacts = count(array_diff(
$allContactIds,
array_keys($associationsData['contact_id_mappings'] ?? [])
));
$existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(
$this->config,
array_map('strval', $dealIds)
);
$existingCrmIdSet = array_flip($existingCrmIds);
} catch (\Throwable $e) {
$this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [
'teamId' => $this->team->getId(),
'dealCount' => count($dealIds),
'error' => $e->getMessage(),
]);
throw $e;
}
$loopStart = microtime(true);
foreach ($deals as $deal) {
$dealStart = microtime(true);
try {
$deal['associations'] = $this->prepareAssociationsForOpportunity(
$deal['id'],
$companyAssociations,
$contactAssociations,
$associationsData
);
$syncedOpportunity = $this->importOrUpdateOpportunity(
$deal,
isset($existingCrmIdSet[(string) $deal['id']])
);
if ($syncedOpportunity) {
$syncedOpportunities['success'][] = $syncedOpportunity;
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [
'teamId' => $this->team->getId(),
'crmId' => $deal['id'],
'error' => $e->getMessage(),
]);
$syncedOpportunities['failed_ids'][] = $deal['id'];
$syncedOpportunities['errors'][$deal['id']] = $e->getMessage();
}
$dealMs = (int) round((microtime(true) - $dealStart) * 1000);
if ($dealMs > 1000) {
$slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];
}
}
$loopMs = (int) round((microtime(true) - $loopStart) * 1000);
$totalMs = (int) round((microtime(true) - $batchStart) * 1000);
$this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [
'teamId' => $this->team->getId(),
'deal_count' => count($deals),
'total_ms' => $totalMs,
'company_assoc_api_ms' => $companyAssocMs,
'contact_assoc_api_ms' => $contactAssocMs,
'prepare_entities_ms' => $prepareMs,
'prepare_accounts_ms' => $prepareTimings['accounts_ms'],
'prepare_contacts_ms' => $prepareTimings['contacts_ms'],
'total_companies' => count($allCompanyIds),
'missing_companies' => $missingCompanies,
'total_contacts' => count($allContactIds),
'missing_contacts' => $missingContacts,
'deals_loop_ms' => $loopMs,
'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,
'slow_deals_count' => count($slowDeals),
'slow_deals' => array_slice($slowDeals, 0, 10),
]);
return $syncedOpportunities;
}
/**
* Prepare associated entities for opportunities with optimized batch processing
* Returns structured data with CRM ID to DB ID mappings for each opportunity
*/
private function prepareAssociatedEntities(
array $companyAssociations,
array $contactAssociations,
array &$timings = []
): array {
// Step 1: Collect all unique company and contact IDs from associations
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
// Step 2: Batch sync missing entities and get CRM ID to DB ID mappings
$companyIdMappings = [];
$contactIdMappings = [];
$accountsMs = 0;
$contactsMs = 0;
if (! empty($allCompanyIds)) {
$start = microtime(true);
$companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);
$accountsMs = (int) round((microtime(true) - $start) * 1000);
}
if (! empty($allContactIds)) {
$start = microtime(true);
$contactIdMappings = $this->prepareAssociatedContacts($allContactIds);
$contactsMs = (int) round((microtime(true) - $start) * 1000);
}
$timings = [
'accounts_ms' => $accountsMs,
'contacts_ms' => $contactsMs,
];
return [
'company_id_mappings' => $companyIdMappings,
'contact_id_mappings' => $contactIdMappings,
];
}
/**
* Flatten association data to get unique IDs
*/
private function flattenAssociationIds(array $associations): array
{
$ids = [];
foreach ($associations as $dealAssociations) {
if (is_array($dealAssociations)) {
foreach ($dealAssociations as $id) {
$ids[$id] = true;
}
}
}
return array_keys($ids);
}
/**
* Batch sync missing accounts
*/
private function prepareAssociatedAccounts(array $companyIds): array
{
// Find which accounts already exist (lean covering-index lookup)
$existingAccountsData = $this->crmEntityRepository
->getExistingAccountIdsMap($this->config, $companyIds);
$missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));
if (empty($missingCompanyIds)) {
return $existingAccountsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [
'teamId' => $this->team->getUuid(),
'total_companies' => count($companyIds),
'existing_companies' => count($existingAccountsData),
'missing_companies' => count($missingCompanyIds),
]);
// we already have limit on opportunity ids count
// Initialize variable before try block
$syncedAccountsData = [];
try {
$syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [
'size' => count($missingCompanyIds),
'error' => $e->getMessage(),
]);
$syncedAccountsData = [];
}
return $existingAccountsData + $syncedAccountsData;
}
/**
* Prepare associated contacts - find existing and sync missing ones
* Returns mapping of CRM ID to DB ID
*/
private function prepareAssociatedContacts(array $contactIds): array
{
// Find which contacts already exist (lean covering-index lookup)
$existingContactsData = $this->crmEntityRepository
->getExistingContactIdsMap($this->config, $contactIds);
$missingContactIds = array_diff($contactIds, array_keys($existingContactsData));
if (empty($missingContactIds)) {
return $existingContactsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [
'teamId' => $this->team->getUuid(),
'total_contacts' => count($contactIds),
'existing_contacts' => count($existingContactsData),
'missing_contacts' => count($missingContactIds),
]);
// Sync missing contacts using batch API
try {
$syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [
'size' => count($missingContactIds),
'error' => $e->getMessage(),
]);
$syncedContactsData = [];
}
return $existingContactsData + $syncedContactsData;
}
private function batchSyncCrmObjects(string $objectType, array $crmIds): array
{
$syncObjects = [];
$crmObjectIds = array_values($crmIds);
foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {
try {
$objects = $objectType === 'companies' ?
$this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :
$this->client->getContactsByIds($chunk, $this->getContactFields());
foreach ($objects as $objectId => $objectData) {
$this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [
'requested_count' => count($chunk),
'synced_count' => count($objects),
]);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [
'ids' => $chunk,
'error' => $e->getMessage(),
]);
}
}
return $syncObjects;
}
private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void
{
try {
$object = $objectType === 'companies' ?
$this->importAccount($objectData) :
$this->importContact($objectData);
if ($object) {
$syncObjects[$object->getCrmProviderId()] = $object->getId();
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [
'id' => $objectId,
'error' => $e->getMessage(),
]);
}
}
/**
* Prepare associations for a single opportunity
*
* The return value is an array with the following structure:
* [
* 'companies' => [
* $companyCrmId => $companyId,
* ...
* ],
* 'contacts' => [
* $contactCrmId => $contactId,
* ...
* ],
* 'account_id' => $accountId,
* ]
*/
private function prepareAssociationsForOpportunity(
string $oppCrmId,
array $companyAssociations,
array $contactAssociations,
array $associationsData
): array {
$associations = [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
$oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];
foreach ($oppCompanyIds as $companyCrmId) {
if (isset($associationsData['company_id_mappings'][$companyCrmId])) {
$associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];
// Set primary account (first company becomes primary account)
if ($associations['account_id'] === null) {
$associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];
}
}
}
$oppContactIds = $contactAssociations[$oppCrmId] ?? [];
foreach ($oppContactIds as $contactCrmId) {
if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {
$associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];
}
}
return $associations;
}
/**
* Update only associations for an opportunity
*/
private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void
{
// Update contact associations
$this->importOpportunityContacts($opportunity, $associations['contacts']);
// Update company (account) associations
$this->updateOpportunityAccount($opportunity, $associations['account_id']);
}
/**
* Remove all contact associations from an opportunity
*/
private function removeAllOpportunityContacts(Opportunity $opportunity): void
{
$currentCount = (int) $opportunity->contacts()->count();
if ($currentCount > 0) {
$opportunity->contacts()->detach();
$this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_count' => $currentCount,
]);
}
}
private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void
{
if ($accountId === null) {
// No account ID provided - keep current account
return;
}
$currentAccountId = $opportunity->getAccountId();
// Only update if account has changed
if ($currentAccountId !== $accountId) {
$opportunity->account_id = $accountId;
$opportunity->save();
$this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [
'opportunity_id' => $opportunity->getId(),
'old_account_id' => $currentAccountId,
'new_account_id' => $accountId,
]);
}
}
/**
* Find existing opportunities by external IDs (OPTIMIZED VERSION)
* Uses batch query for better performance
*/
private function findExistingOpportunities(array $crmIds): Collection
{
return $this->crmEntityRepository
->findOpportunitiesByExternalIds($this->config, $crmIds);
}
private function processOpportunityBatch(array $opportunities): int
{
$syncedOpportunities = $this->importOpportunityBatch($opportunities);
return count($syncedOpportunities['success'] ?? []);
}
/**
* Convert single deal associations from HubSpot format to internal format
* Handles both HubSpot SDK objects and array formats
*
* @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed
*
* @return array Processed associations with DB IDs
*/
private function convertDealAssociations(array $opportunityAssociations): array
{
$associations = $this->initializeAssociationsStructure();
if (empty($opportunityAssociations)) {
return $associations;
}
$associationIds = $this->extractAssociationIds($opportunityAssociations);
$this->processCompanyAssociations($associationIds, $associations);
$this->processContactAssociations($associationIds, $associations);
return $associations;
}
private function initializeAssociationsStructure(): array
{
return [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
}
private function extractAssociationIds(array $opportunityAssociations): array
{
$associationIds = [];
foreach ($opportunityAssociations as $type => $associationData) {
if (! empty($associationData)) {
$associationIds[$type] = $this->convertSingleDealAssociations($associationData);
}
}
return $associationIds;
}
private function processCompanyAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['companies'])) {
return;
}
$companyId = $associationIds['companies'][0];
$account = $this->findOrSyncAccount($companyId);
if ($account instanceof Account) {
$associations['companies'][$companyId] = $account->getId();
$associations['account_id'] = $account->getId();
}
}
private function processContactAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['contacts'])) {
return;
}
foreach ($associationIds['contacts'] as $contactId) {
$contact = $this->findOrSyncContact($contactId);
if ($contact instanceof Contact) {
$associations['contacts'][$contactId] = $contact->getId();
}
}
}
private function findOrSyncAccount(string $companyId): ?Account
{
$account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);
if (! $account instanceof Account) {
$account = $this->syncAccount($companyId);
}
return $account;
}
private function findOrSyncContact(string $contactId): ?Contact
{
$contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);
if (! $contact instanceof Contact) {
$contact = $this->syncContact($contactId);
}
return $contact;
}
private function convertSingleDealAssociations($opportunityAssociations = null): array
{
$associationData = [];
if ($opportunityAssociations === null) {
return $associationData;
}
// Handle array input (from extractAssociationIds)
if (is_array($opportunityAssociations)) {
return $opportunityAssociations;
}
// Handle CollectionResponseAssociatedId object
if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {
foreach ($opportunityAssociations->getResults() as $association) {
$associationData[] = $association->getId();
}
}
return $associationData;
}
private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity
{
if (empty($crmData['properties'])) {
return null;
}
$crmId = (string) $crmData['id'];
$properties = $crmData['properties'];
$associations = $crmData['associations'] ?? [];
$opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(
$this->config,
$crmId
);
if ($opportunityExists) {
return $this->updateOpportunity($crmId, $properties, $associations);
}
return $this->createOpportunity($crmId, $properties, $associations);
}
/**
* Create new opportunity
*/
private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity
{
$accountId = $this->resolveAccountId($associations);
if (! $accountId) {
return null;
}
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
if (! $businessProcess) {
return null;
}
$stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);
if (! $stage) {
return null;
}
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->importOpportunityContacts($opportunity, $associations['contacts']);
if ($opportunity->wasRecentlyCreated) {
MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());
}
return $opportunity;
}
/**
* Update existing opportunity
*/
private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity
{
$accountId = $this->resolveAccountId($associations);
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->updateOpportunityAssociations($opportunity, $associations);
return $opportunity;
}
private function resolveAccountId(array $associations): ?int
{
if (! empty($associations['account_id'])) {
return $associations['account_id'];
}
if (empty($associations)) {
return null;
}
// Fallback: use first company as account (currently SDK returns one company)
foreach ($associations['companies'] as $accountId) {
return $accountId;
}
return null;
}
private function buildOpportunityData(
array $properties,
?int $accountId,
?BusinessProcess $businessProcess,
?Stage $stage
): array {
$ownerId = null;
$profile = null;
if (! empty($properties['hubspot_owner_id'])) {
$ownerId = $properties['hubspot_owner_id'];
$profile = $this->getCachedOwnerProfile((string) $ownerId);
}
$name = 'Unknown';
if (isset($properties['dealname'])) {
$name = mb_strimwidth($properties['dealname'], 0, 128);
}
$amount = $this->resolveAmount($properties);
$currency = $properties['deal_currency_code'] ?? null;
$closeDate = null;
if (! empty($properties['closedate'])) {
$closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');
}
$remotelyCreatedAt = null;
if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {
$date = $this->parseCleanDatetime($properties['createdate']);
$remotelyCreatedAt = $date?->format('Y-m-d H:i:s');
}
$closedStages = $this->getClosedDealStages();
$isWon = in_array($properties['dealstage'], $closedStages['won']);
$isLost = in_array($properties['dealstage'], $closedStages['lost']);
$data = [
'team_id' => $this->team->getId(),
'user_id' => $profile ? $profile->user_id : null,
'owner_id' => $ownerId,
'name' => $name,
'value' => ! empty($amount) ? $amount : null,
'currency_code' => CurrencyFormatter::formatCode($currency),
'close_date' => $closeDate,
'is_closed' => $isWon || $isLost,
'is_won' => $isWon,
'remotely_created_at' => $remotelyCreatedAt,
'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),
'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),
];
if ($accountId) {
$data['account_id'] = $accountId;
}
if ($stage) {
$data['stage_id'] = $stage->id;
}
if ($businessProcess) {
$recordType = $this->getCachedBusinessProcessRecordType($businessProcess);
if ($recordType) {
$data['record_type_id'] = $recordType->id;
}
}
return $data;
}
private function getCachedOwnerProfile(string $ownerId): mixed
{
$cacheKey = $this->config->getId() . ':' . $ownerId;
if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {
return $this->cachedOwnerProfiles[$cacheKey];
}
$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);
$this->cachedOwnerProfiles[$cacheKey] = $profile;
return $profile;
}
private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed
{
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId();
if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {
return $this->cachedRecordTypes[$cacheKey];
}
$recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);
$this->cachedRecordTypes[$cacheKey] = $recordType;
return $recordType;
}
private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess
{
if ($pipelineId === null) {
return null;
}
$cacheKey = $this->getBusinessProcessCacheKey($pipelineId);
if (isset($this->cachedBusinessProcesses[$cacheKey])) {
return $this->cachedBusinessProcesses[$cacheKey];
}
$businessProcess = $this->getBusinessProcess($pipelineId);
if (! $businessProcess instanceof BusinessProcess) {
$this->importStages();
$businessProcess = $this->getBusinessProcess($pipelineId);
}
if (! $businessProcess instanceof BusinessProcess) {
$this->logger->info(
'[HubSpot] Deal is not attached to a pipeline',
[
'pipeline' => $pipelineId]
);
}
$this->cachedBusinessProcesses[$cacheKey] = $businessProcess;
return $businessProcess;
}
private function getBusinessProcess(string $pipelineId): ?BusinessProcess
{
return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);
}
private function getBusinessProcessCacheKey(string $pipelineId): string
{
return $this->config->getId() . '_' . $pipelineId;
}
private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage
{
if (empty($stageId)) {
return null;
}
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;
if (isset($this->cachedStages[$cacheKey])) {
return $this->cachedStages[$cacheKey];
}
$stage = $this->crmEntityRepository->getPipelineStageByConditions(
$businessProcess,
[
'crm_provider_id' => $stageId,
'type' => Stage::TYPE_OPPORTUNITY,
]
);
if ($stage === null) {
$this->importStages(null, $stageId);
}
if ($stage === null) {
$this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);
}
$this->cachedStages[$cacheKey] = $stage;
return $stage;
}
private function resolveAmount(array $properties): ?string
{
$amount = null;
if (! empty($properties['amount'])) {
$amount = str_replace(',', '', $properties['amount']);
}
if ($this->config->hasDefaultCurrencyFieldSet()) {
$valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();
$amount = $properties[$valueFieldName] ?? $amount;
}
return $amount;
}
private function parseCleanDatetime(string $datetime): ?Carbon
{
// Treat pre-1980 values as invalid
$minValidDate = Carbon::parse('1980-01-01 00:00:00');
try {
$date = Carbon::parse($datetime);
if ($minValidDate->gt($date)) {
return null;
}
return $date;
} catch (Exception) {
return null; // On parse error, treat as null
}
}
private function resolveDealProbability(?string $stageProbability): int
{
if ($stageProbability === null) {
return 0;
}
$probability = (float) $stageProbability;
return $probability > 1 ? 0 : (int) ($probability * 100);
}
private function resolveForecastCategory(?string $forecastCategory): string
{
if (! $forecastCategory) {
return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;
}
$forecastCategory = str_replace('_', ' ', $forecastCategory);
return ucwords(strtolower($forecastCategory));
}
private function importExternalFieldData(array $properties, int $opportunityId): void
{
$this->importOpportunityCrmFieldData(
$properties,
$this->getCachedOpportunitySyncableFields(),
$opportunityId
);
}
private function getCachedOpportunitySyncableFields(): array
{
$cacheKey = (string) $this->config->getId();
if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {
$this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();
}
return $this->cachedOpportunitySyncableFields[$cacheKey];
}
private function importOpportunityContacts(Opportunity $opportunity, array $associations): void
{
// Handle empty or missing contact associations
if (empty($associations)) {
// Remove all existing contact associations if none provided
$this->removeAllOpportunityContacts($opportunity);
return;
}
// Use differential sync approach for better performance and accuracy
$this->syncOpportunityContactsDifferential($opportunity, $associations);
}
/**
* Sync opportunity contacts using differential approach
* This compares current vs new associations and only makes necessary changes
*/
private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void
{
$currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);
$contactAssociationIds = array_keys($contactAssociations);
$contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);
$contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);
if (empty($contactsToAdd) && empty($contactsToRemove)) {
return;
}
$this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);
$this->removeContactAssociations($opportunity, $contactsToRemove);
$this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);
}
private function getCurrentContactCrmIds(Opportunity $opportunity): array
{
return $opportunity->contacts()
->pluck('contacts.crm_provider_id')
->toArray();
}
private function logContactAssociationChanges(
Opportunity $opportunity,
array $currentContactCrmIds,
array $contactAssociations,
array $contactsToAdd,
array $contactsToRemove
): void {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [
'opportunity_id' => $opportunity->getId(),
'current_contacts' => $currentContactCrmIds,
'new_contacts' => $contactAssociations,
'contacts_to_add' => $contactsToAdd,
'contacts_to_remove' => $contactsToRemove,
]);
}
private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void
{
if (empty($contactsToRemove)) {
return;
}
$contactsToDetach = $opportunity->contacts()
->whereIn('contacts.crm_provider_id', $contactsToRemove)
->pluck('contacts.id')
->toArray();
if (! empty($contactsToDetach)) {
$opportunity->contacts()->detach($contactsToDetach);
$this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_contact_crm_ids' => $contactsToRemove,
'removed_contact_count' => count($contactsToDetach),
]);
}
}
private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void
{
if (empty($contactsToAdd)) {
return;
}
$contactsAdded = [];
foreach ($contactsToAdd as $crmId) {
$id = $contactAssociations[$crmId];
if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {
$contactsAdded[] = $crmId;
}
}
$this->logAddedContacts($opportunity, $contactsAdded);
}
private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool
{
try {
return $this->performContactAttachment($opportunity, $id, $crmId);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [
'opportunity_id' => $opportunity->getId(),
'contact_crm_id' => $crmId,
'error' => $e->getMessage(),
]);
return false;
}
}
private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool
{
try {
$opportunity->contacts()->attach($contactId, [
'crm_provider_id' => $crmId,
]);
return true;
} catch (\Illuminate\Database\QueryException $e) {
if (str_contains($e->getMessage(), 'Duplicate entry')) {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [
'contact_id' => $contactId,
'contact_crm_id' => $crmId,
'opportunity_id' => $opportunity->getId(),
]);
return false;
}
throw $e;
}
}
private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void
{
if (! empty($contactsAdded)) {
$this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [
'opportunity_id' => $opportunity->getId(),
'added_contact_crm_ids' => $contactsAdded,
'added_contacts_count' => count($contactsAdded),
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.4005984,"top":0.09736632,"width":0.28257978,"height":0.8818835},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3231383,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"34","depth":4,"bounds":{"left":0.3331117,"top":0.2490024,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.34541222,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"22","depth":4,"bounds":{"left":0.35538563,"top":0.2490024,"width":0.009973404,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.36702126,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3743351,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\CollectionResponseAssociatedId;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Models\\Account;\nuse Exception;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Jobs\\Crm\\MatchActivitiesToNewOpportunity;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\BusinessProcess;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Models\\Opportunity;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Repositories\\Crm\\CrmEntityRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DealFieldsService;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\HubspotSingleSyncStrategy;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\nuse Jiminny\\Services\\Crm\\OpportunitySyncStrategyResolver;\nuse Jiminny\\Utils\\CurrencyFormatter;\n\n/**\n * Optimized sync methods for better performance\n * These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains\n */\ntrait OpportunitySyncTrait\n{\n private const int BATCH_SIZE = 100;\n private const int BATCH_PROCESS_SIZE = 800;\n\n protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;\n protected CrmEntityRepository $crmEntityRepository;\n protected DealFieldsService $dealFieldsService;\n\n private ?array $cachedClosedDealStages = null;\n private array $cachedBusinessProcesses = [];\n private array $cachedStages = [];\n /** @var array<string, array<string>> keyed by config id */\n private array $cachedOpportunitySyncableFields = [];\n /** @var array<string, mixed> keyed by configId:ownerId */\n private array $cachedOwnerProfiles = [];\n /** @var array<string, mixed> keyed by configId:businessProcessId */\n private array $cachedRecordTypes = [];\n\n public function syncOpportunities(array $parameters, ?string $strategy = null): int\n {\n $startTime = microtime(true);\n $strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);\n $parameters['config'] = $this->config;\n $syncCount = 0;\n $reportedTotal = 0;\n $lastSyncedId = [];\n $strategyNames = [];\n\n try {\n foreach ($strategies as $strategyName => $syncStrategy) {\n $strategyNames[] = $strategyName;\n $this->logger->info(\n '[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,\n ['team' => $this->team->getId()]\n );\n\n $total = 0;\n $lastId = null;\n $buffer = [];\n\n // HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies\n foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {\n $buffer[] = $hsOpportunity;\n\n // process every 800 rows (fits < 1 000 association limit)\n if (\\count($buffer) >= self::BATCH_PROCESS_SIZE) {\n $syncCount += $this->processOpportunityBatch($buffer);\n $buffer = [];\n }\n }\n\n // leftovers\n if ($buffer) {\n $syncCount += $this->processOpportunityBatch($buffer);\n }\n\n $reportedTotal += $total;\n $lastSyncedId = $lastId;\n }\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException | CrmException $e) {\n $this->handleSyncException($e, $parameters);\n }\n\n $durationMs = round((microtime(true) - $startTime) * 1000, 2);\n $this->logger->info(\n '[HubSpot] Synced opportunities',\n [\n 'team' => $this->team->getId(),\n 'strategies' => implode(',', $strategyNames),\n 'sync_count' => $syncCount,\n 'total' => $reportedTotal,\n 'last_synced_id' => $lastSyncedId,\n 'duration_ms' => $durationMs,\n ]\n );\n\n return $reportedTotal;\n }\n\n private function handleSyncException(\\Throwable $e, array $parameters): void\n {\n if (($parameters['since'] ?? null) instanceof Carbon) {\n $parameters['since'] = $parameters['since']->toDateTimeString();\n }\n $parameters['config'] = $this->config->getId();\n\n $this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [\n 'teamId' => $this->team->getUuid(),\n 'parameters' => $parameters,\n 'reason' => $e->getMessage(),\n ]);\n }\n\n /**\n * @inheritdoc\n */\n public function syncOpportunity(string $crmId): ?Opportunity\n {\n $this->client->getOpportunityById($params['crm_id'], $fields);;\n $strategy = $this->opportunitySyncStrategyResolver->resolve(\n $this->config,\n OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,\n );\n\n $parameters = [\n 'config' => $this->config,\n 'crm_id' => $crmId,\n ];\n\n try {\n if (! $strategy instanceof HubspotSingleSyncStrategy) {\n throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');\n }\n\n $hsOpportunity = $strategy->fetchOpportunity($parameters);\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException $e) {\n $this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [\n 'teamId' => $this->team->getUuid(),\n 'crmId' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);\n\n return $this->importOrUpdateOpportunity($hsOpportunity);\n }\n\n /**\n * Process webhook-collected opportunity batches.\n *\n * Drains Redis sets containing company CRM IDs collected from webhook events\n * and dispatches ImportOpportunityBatch jobs for batch processing.\n *\n * @return int Number of opportunity IDs dispatched to jobs\n */\n public function batchSyncOpportunities(): int\n {\n $configId = $this->team->getCrmConfiguration()->getId();\n\n return $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n }\n\n /**\n * Import a batch of opportunities by their CRM IDs.\n * Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().\n *\n * @param array<string> $crmIds HubSpot deal CRM IDs\n *\n * @return array{success: array, failed_ids: array, errors?: array<string, string>}\n */\n public function importOpportunityBatchByIds(array $crmIds): array\n {\n $fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);\n\n $allDeals = [];\n foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {\n $deals = $this->client->getOpportunitiesByIds($chunk, $fields);\n foreach ($deals as $deal) {\n $allDeals[] = $deal;\n }\n }\n\n // IDs not returned by HubSpot are likely deleted or inaccessible deals.\n // These are not failures — retrying won't bring them back.\n $fetchedIds = array_map('strval', array_column($allDeals, 'id'));\n $notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));\n\n if (! empty($notFoundIds)) {\n $this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [\n 'teamId' => $this->team->getId(),\n 'notFoundCount' => \\count($notFoundIds),\n 'notFoundIds' => $notFoundIds,\n 'requestedCount' => \\count($crmIds),\n 'fetchedCount' => \\count($allDeals),\n ]);\n }\n\n if (empty($allDeals)) {\n return ['success' => [], 'failed_ids' => []];\n }\n\n return $this->importOpportunityBatch($allDeals);\n }\n\n private function getClosedDealStages(): array\n {\n if ($this->cachedClosedDealStages !== null) {\n return $this->cachedClosedDealStages;\n }\n\n $stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);\n $data = [\n 'lost' => [],\n 'won' => [],\n ];\n\n foreach ($stages as $stage) {\n if ($stage->probability == 0.00) {\n $data['lost'][] = $stage->crm_provider_id;\n }\n if ($stage->probability == 100.00) {\n $data['won'][] = $stage->crm_provider_id;\n }\n }\n\n $this->cachedClosedDealStages = $data;\n\n return $data;\n }\n\n /**\n * Import deals into the database with pre-fetched associations.\n *\n * API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT\n * caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()\n * where Laravel retries the whole job with backoff. After all retries exhausted,\n * failed() requeues all IDs to Redis.\n *\n * The per-deal loop catches exceptions individually. A deal can end up in three states:\n * - success: imported/updated successfully\n * - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)\n * These are permanent issues — retrying won't fix them.\n * - skipped (null): missing dependencies (no account, unknown pipeline/stage).\n * This is acceptable — the deal cannot be imported until those exist.\n */\n private function importOpportunityBatch(array $deals): array\n {\n $syncedOpportunities = [\n 'success' => [],\n 'failed_ids' => [],\n ];\n $dealIds = array_column($deals, 'id');\n $batchStart = microtime(true);\n $slowDeals = [];\n\n // Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the\n // queue job retries the whole batch and eventually requeues all deal IDs back to Redis.\n try {\n $companyAssocStart = microtime(true);\n $companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');\n $companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);\n\n $contactAssocStart = microtime(true);\n $contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');\n $contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);\n\n $prepareStart = microtime(true);\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n $prepareTimings = [];\n $associationsData = $this->prepareAssociatedEntities(\n $companyAssociations,\n $contactAssociations,\n $prepareTimings\n );\n $prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);\n\n $missingCompanies = count(array_diff(\n $allCompanyIds,\n array_keys($associationsData['company_id_mappings'] ?? [])\n ));\n $missingContacts = count(array_diff(\n $allContactIds,\n array_keys($associationsData['contact_id_mappings'] ?? [])\n ));\n\n $existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(\n $this->config,\n array_map('strval', $dealIds)\n );\n $existingCrmIdSet = array_flip($existingCrmIds);\n } catch (\\Throwable $e) {\n $this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [\n 'teamId' => $this->team->getId(),\n 'dealCount' => count($dealIds),\n 'error' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $loopStart = microtime(true);\n foreach ($deals as $deal) {\n $dealStart = microtime(true);\n\n try {\n $deal['associations'] = $this->prepareAssociationsForOpportunity(\n $deal['id'],\n $companyAssociations,\n $contactAssociations,\n $associationsData\n );\n\n $syncedOpportunity = $this->importOrUpdateOpportunity(\n $deal,\n isset($existingCrmIdSet[(string) $deal['id']])\n );\n if ($syncedOpportunity) {\n $syncedOpportunities['success'][] = $syncedOpportunity;\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [\n 'teamId' => $this->team->getId(),\n 'crmId' => $deal['id'],\n 'error' => $e->getMessage(),\n ]);\n $syncedOpportunities['failed_ids'][] = $deal['id'];\n $syncedOpportunities['errors'][$deal['id']] = $e->getMessage();\n }\n\n $dealMs = (int) round((microtime(true) - $dealStart) * 1000);\n if ($dealMs > 1000) {\n $slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];\n }\n }\n $loopMs = (int) round((microtime(true) - $loopStart) * 1000);\n $totalMs = (int) round((microtime(true) - $batchStart) * 1000);\n\n $this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [\n 'teamId' => $this->team->getId(),\n 'deal_count' => count($deals),\n 'total_ms' => $totalMs,\n 'company_assoc_api_ms' => $companyAssocMs,\n 'contact_assoc_api_ms' => $contactAssocMs,\n 'prepare_entities_ms' => $prepareMs,\n 'prepare_accounts_ms' => $prepareTimings['accounts_ms'],\n 'prepare_contacts_ms' => $prepareTimings['contacts_ms'],\n 'total_companies' => count($allCompanyIds),\n 'missing_companies' => $missingCompanies,\n 'total_contacts' => count($allContactIds),\n 'missing_contacts' => $missingContacts,\n 'deals_loop_ms' => $loopMs,\n 'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,\n 'slow_deals_count' => count($slowDeals),\n 'slow_deals' => array_slice($slowDeals, 0, 10),\n ]);\n\n return $syncedOpportunities;\n }\n\n /**\n * Prepare associated entities for opportunities with optimized batch processing\n * Returns structured data with CRM ID to DB ID mappings for each opportunity\n */\n private function prepareAssociatedEntities(\n array $companyAssociations,\n array $contactAssociations,\n array &$timings = []\n ): array {\n // Step 1: Collect all unique company and contact IDs from associations\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n\n // Step 2: Batch sync missing entities and get CRM ID to DB ID mappings\n $companyIdMappings = [];\n $contactIdMappings = [];\n $accountsMs = 0;\n $contactsMs = 0;\n\n if (! empty($allCompanyIds)) {\n $start = microtime(true);\n $companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);\n $accountsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n if (! empty($allContactIds)) {\n $start = microtime(true);\n $contactIdMappings = $this->prepareAssociatedContacts($allContactIds);\n $contactsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n $timings = [\n 'accounts_ms' => $accountsMs,\n 'contacts_ms' => $contactsMs,\n ];\n\n return [\n 'company_id_mappings' => $companyIdMappings,\n 'contact_id_mappings' => $contactIdMappings,\n ];\n }\n\n /**\n * Flatten association data to get unique IDs\n */\n private function flattenAssociationIds(array $associations): array\n {\n $ids = [];\n foreach ($associations as $dealAssociations) {\n if (is_array($dealAssociations)) {\n foreach ($dealAssociations as $id) {\n $ids[$id] = true;\n }\n }\n }\n\n return array_keys($ids);\n }\n\n /**\n * Batch sync missing accounts\n */\n private function prepareAssociatedAccounts(array $companyIds): array\n {\n // Find which accounts already exist (lean covering-index lookup)\n $existingAccountsData = $this->crmEntityRepository\n ->getExistingAccountIdsMap($this->config, $companyIds);\n\n $missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));\n\n if (empty($missingCompanyIds)) {\n return $existingAccountsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [\n 'teamId' => $this->team->getUuid(),\n 'total_companies' => count($companyIds),\n 'existing_companies' => count($existingAccountsData),\n 'missing_companies' => count($missingCompanyIds),\n ]);\n\n // we already have limit on opportunity ids count\n // Initialize variable before try block\n $syncedAccountsData = [];\n\n try {\n $syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [\n 'size' => count($missingCompanyIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedAccountsData = [];\n }\n\n return $existingAccountsData + $syncedAccountsData;\n }\n\n /**\n * Prepare associated contacts - find existing and sync missing ones\n * Returns mapping of CRM ID to DB ID\n */\n private function prepareAssociatedContacts(array $contactIds): array\n {\n // Find which contacts already exist (lean covering-index lookup)\n $existingContactsData = $this->crmEntityRepository\n ->getExistingContactIdsMap($this->config, $contactIds);\n\n $missingContactIds = array_diff($contactIds, array_keys($existingContactsData));\n\n if (empty($missingContactIds)) {\n return $existingContactsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [\n 'teamId' => $this->team->getUuid(),\n 'total_contacts' => count($contactIds),\n 'existing_contacts' => count($existingContactsData),\n 'missing_contacts' => count($missingContactIds),\n ]);\n\n // Sync missing contacts using batch API\n try {\n $syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [\n 'size' => count($missingContactIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedContactsData = [];\n }\n\n return $existingContactsData + $syncedContactsData;\n }\n\n private function batchSyncCrmObjects(string $objectType, array $crmIds): array\n {\n $syncObjects = [];\n $crmObjectIds = array_values($crmIds);\n\n foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {\n try {\n $objects = $objectType === 'companies' ?\n $this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :\n $this->client->getContactsByIds($chunk, $this->getContactFields());\n\n foreach ($objects as $objectId => $objectData) {\n $this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [\n 'requested_count' => count($chunk),\n 'synced_count' => count($objects),\n ]);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [\n 'ids' => $chunk,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n return $syncObjects;\n }\n\n private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void\n {\n try {\n $object = $objectType === 'companies' ?\n $this->importAccount($objectData) :\n $this->importContact($objectData);\n\n if ($object) {\n $syncObjects[$object->getCrmProviderId()] = $object->getId();\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [\n 'id' => $objectId,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n /**\n * Prepare associations for a single opportunity\n *\n * The return value is an array with the following structure:\n * [\n * 'companies' => [\n * $companyCrmId => $companyId,\n * ...\n * ],\n * 'contacts' => [\n * $contactCrmId => $contactId,\n * ...\n * ],\n * 'account_id' => $accountId,\n * ]\n */\n private function prepareAssociationsForOpportunity(\n string $oppCrmId,\n array $companyAssociations,\n array $contactAssociations,\n array $associationsData\n ): array {\n $associations = [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n\n $oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];\n foreach ($oppCompanyIds as $companyCrmId) {\n if (isset($associationsData['company_id_mappings'][$companyCrmId])) {\n $associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];\n\n // Set primary account (first company becomes primary account)\n if ($associations['account_id'] === null) {\n $associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];\n }\n }\n }\n\n $oppContactIds = $contactAssociations[$oppCrmId] ?? [];\n foreach ($oppContactIds as $contactCrmId) {\n if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {\n $associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];\n }\n }\n\n return $associations;\n }\n\n /**\n * Update only associations for an opportunity\n */\n private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void\n {\n // Update contact associations\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n // Update company (account) associations\n $this->updateOpportunityAccount($opportunity, $associations['account_id']);\n }\n\n /**\n * Remove all contact associations from an opportunity\n */\n private function removeAllOpportunityContacts(Opportunity $opportunity): void\n {\n $currentCount = (int) $opportunity->contacts()->count();\n\n if ($currentCount > 0) {\n $opportunity->contacts()->detach();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_count' => $currentCount,\n ]);\n }\n }\n\n private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void\n {\n if ($accountId === null) {\n // No account ID provided - keep current account\n return;\n }\n\n $currentAccountId = $opportunity->getAccountId();\n\n // Only update if account has changed\n if ($currentAccountId !== $accountId) {\n $opportunity->account_id = $accountId;\n $opportunity->save();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [\n 'opportunity_id' => $opportunity->getId(),\n 'old_account_id' => $currentAccountId,\n 'new_account_id' => $accountId,\n ]);\n }\n }\n\n /**\n * Find existing opportunities by external IDs (OPTIMIZED VERSION)\n * Uses batch query for better performance\n */\n private function findExistingOpportunities(array $crmIds): Collection\n {\n return $this->crmEntityRepository\n ->findOpportunitiesByExternalIds($this->config, $crmIds);\n }\n\n private function processOpportunityBatch(array $opportunities): int\n {\n $syncedOpportunities = $this->importOpportunityBatch($opportunities);\n\n return count($syncedOpportunities['success'] ?? []);\n }\n\n /**\n * Convert single deal associations from HubSpot format to internal format\n * Handles both HubSpot SDK objects and array formats\n *\n * @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed\n *\n * @return array Processed associations with DB IDs\n */\n private function convertDealAssociations(array $opportunityAssociations): array\n {\n $associations = $this->initializeAssociationsStructure();\n\n if (empty($opportunityAssociations)) {\n return $associations;\n }\n\n $associationIds = $this->extractAssociationIds($opportunityAssociations);\n\n $this->processCompanyAssociations($associationIds, $associations);\n $this->processContactAssociations($associationIds, $associations);\n\n return $associations;\n }\n\n private function initializeAssociationsStructure(): array\n {\n return [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n }\n\n private function extractAssociationIds(array $opportunityAssociations): array\n {\n $associationIds = [];\n\n foreach ($opportunityAssociations as $type => $associationData) {\n if (! empty($associationData)) {\n $associationIds[$type] = $this->convertSingleDealAssociations($associationData);\n }\n }\n\n return $associationIds;\n }\n\n private function processCompanyAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['companies'])) {\n return;\n }\n\n $companyId = $associationIds['companies'][0];\n $account = $this->findOrSyncAccount($companyId);\n\n if ($account instanceof Account) {\n $associations['companies'][$companyId] = $account->getId();\n $associations['account_id'] = $account->getId();\n }\n }\n\n private function processContactAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['contacts'])) {\n return;\n }\n\n foreach ($associationIds['contacts'] as $contactId) {\n $contact = $this->findOrSyncContact($contactId);\n\n if ($contact instanceof Contact) {\n $associations['contacts'][$contactId] = $contact->getId();\n }\n }\n }\n\n private function findOrSyncAccount(string $companyId): ?Account\n {\n $account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);\n\n if (! $account instanceof Account) {\n $account = $this->syncAccount($companyId);\n }\n\n return $account;\n }\n\n private function findOrSyncContact(string $contactId): ?Contact\n {\n $contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);\n\n if (! $contact instanceof Contact) {\n $contact = $this->syncContact($contactId);\n }\n\n return $contact;\n }\n\n private function convertSingleDealAssociations($opportunityAssociations = null): array\n {\n $associationData = [];\n\n if ($opportunityAssociations === null) {\n return $associationData;\n }\n\n // Handle array input (from extractAssociationIds)\n if (is_array($opportunityAssociations)) {\n return $opportunityAssociations;\n }\n\n // Handle CollectionResponseAssociatedId object\n if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {\n foreach ($opportunityAssociations->getResults() as $association) {\n $associationData[] = $association->getId();\n }\n }\n\n return $associationData;\n }\n\n private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity\n {\n if (empty($crmData['properties'])) {\n return null;\n }\n\n $crmId = (string) $crmData['id'];\n $properties = $crmData['properties'];\n $associations = $crmData['associations'] ?? [];\n\n $opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(\n $this->config,\n $crmId\n );\n\n if ($opportunityExists) {\n return $this->updateOpportunity($crmId, $properties, $associations);\n }\n\n return $this->createOpportunity($crmId, $properties, $associations);\n }\n\n /**\n * Create new opportunity\n */\n private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n if (! $accountId) {\n return null;\n }\n\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n if (! $businessProcess) {\n return null;\n }\n\n $stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);\n if (! $stage) {\n return null;\n }\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n if ($opportunity->wasRecentlyCreated) {\n MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());\n }\n\n return $opportunity;\n }\n\n /**\n * Update existing opportunity\n */\n private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n $stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->updateOpportunityAssociations($opportunity, $associations);\n\n return $opportunity;\n }\n\n private function resolveAccountId(array $associations): ?int\n {\n if (! empty($associations['account_id'])) {\n return $associations['account_id'];\n }\n\n if (empty($associations)) {\n return null;\n }\n\n // Fallback: use first company as account (currently SDK returns one company)\n foreach ($associations['companies'] as $accountId) {\n return $accountId;\n }\n\n return null;\n }\n\n private function buildOpportunityData(\n array $properties,\n ?int $accountId,\n ?BusinessProcess $businessProcess,\n ?Stage $stage\n ): array {\n $ownerId = null;\n $profile = null;\n if (! empty($properties['hubspot_owner_id'])) {\n $ownerId = $properties['hubspot_owner_id'];\n $profile = $this->getCachedOwnerProfile((string) $ownerId);\n }\n\n $name = 'Unknown';\n if (isset($properties['dealname'])) {\n $name = mb_strimwidth($properties['dealname'], 0, 128);\n }\n\n $amount = $this->resolveAmount($properties);\n $currency = $properties['deal_currency_code'] ?? null;\n\n $closeDate = null;\n if (! empty($properties['closedate'])) {\n $closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');\n }\n\n $remotelyCreatedAt = null;\n if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {\n $date = $this->parseCleanDatetime($properties['createdate']);\n $remotelyCreatedAt = $date?->format('Y-m-d H:i:s');\n }\n\n $closedStages = $this->getClosedDealStages();\n $isWon = in_array($properties['dealstage'], $closedStages['won']);\n $isLost = in_array($properties['dealstage'], $closedStages['lost']);\n\n $data = [\n 'team_id' => $this->team->getId(),\n 'user_id' => $profile ? $profile->user_id : null,\n 'owner_id' => $ownerId,\n 'name' => $name,\n 'value' => ! empty($amount) ? $amount : null,\n 'currency_code' => CurrencyFormatter::formatCode($currency),\n 'close_date' => $closeDate,\n 'is_closed' => $isWon || $isLost,\n 'is_won' => $isWon,\n 'remotely_created_at' => $remotelyCreatedAt,\n 'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),\n 'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),\n ];\n\n if ($accountId) {\n $data['account_id'] = $accountId;\n }\n\n if ($stage) {\n $data['stage_id'] = $stage->id;\n }\n\n if ($businessProcess) {\n $recordType = $this->getCachedBusinessProcessRecordType($businessProcess);\n if ($recordType) {\n $data['record_type_id'] = $recordType->id;\n }\n }\n\n return $data;\n }\n\n private function getCachedOwnerProfile(string $ownerId): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $ownerId;\n if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {\n return $this->cachedOwnerProfiles[$cacheKey];\n }\n\n $profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);\n $this->cachedOwnerProfiles[$cacheKey] = $profile;\n\n return $profile;\n }\n\n private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId();\n if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {\n return $this->cachedRecordTypes[$cacheKey];\n }\n\n $recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);\n $this->cachedRecordTypes[$cacheKey] = $recordType;\n\n return $recordType;\n }\n\n private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess\n {\n if ($pipelineId === null) {\n return null;\n }\n\n $cacheKey = $this->getBusinessProcessCacheKey($pipelineId);\n if (isset($this->cachedBusinessProcesses[$cacheKey])) {\n return $this->cachedBusinessProcesses[$cacheKey];\n }\n\n $businessProcess = $this->getBusinessProcess($pipelineId);\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->importStages();\n $businessProcess = $this->getBusinessProcess($pipelineId);\n }\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->logger->info(\n '[HubSpot] Deal is not attached to a pipeline',\n [\n 'pipeline' => $pipelineId]\n );\n }\n\n $this->cachedBusinessProcesses[$cacheKey] = $businessProcess;\n\n return $businessProcess;\n }\n\n private function getBusinessProcess(string $pipelineId): ?BusinessProcess\n {\n return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);\n }\n\n private function getBusinessProcessCacheKey(string $pipelineId): string\n {\n return $this->config->getId() . '_' . $pipelineId;\n }\n\n private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage\n {\n if (empty($stageId)) {\n return null;\n }\n\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;\n if (isset($this->cachedStages[$cacheKey])) {\n return $this->cachedStages[$cacheKey];\n }\n\n $stage = $this->crmEntityRepository->getPipelineStageByConditions(\n $businessProcess,\n [\n 'crm_provider_id' => $stageId,\n 'type' => Stage::TYPE_OPPORTUNITY,\n ]\n );\n\n if ($stage === null) {\n $this->importStages(null, $stageId);\n }\n\n if ($stage === null) {\n $this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);\n }\n\n $this->cachedStages[$cacheKey] = $stage;\n\n return $stage;\n }\n\n private function resolveAmount(array $properties): ?string\n {\n $amount = null;\n if (! empty($properties['amount'])) {\n $amount = str_replace(',', '', $properties['amount']);\n }\n\n if ($this->config->hasDefaultCurrencyFieldSet()) {\n $valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();\n $amount = $properties[$valueFieldName] ?? $amount;\n }\n\n return $amount;\n }\n\n private function parseCleanDatetime(string $datetime): ?Carbon\n {\n // Treat pre-1980 values as invalid\n $minValidDate = Carbon::parse('1980-01-01 00:00:00');\n\n try {\n $date = Carbon::parse($datetime);\n\n if ($minValidDate->gt($date)) {\n return null;\n }\n\n return $date;\n } catch (Exception) {\n return null; // On parse error, treat as null\n }\n }\n\n private function resolveDealProbability(?string $stageProbability): int\n {\n if ($stageProbability === null) {\n return 0;\n }\n\n $probability = (float) $stageProbability;\n\n return $probability > 1 ? 0 : (int) ($probability * 100);\n }\n\n private function resolveForecastCategory(?string $forecastCategory): string\n {\n if (! $forecastCategory) {\n return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;\n }\n\n $forecastCategory = str_replace('_', ' ', $forecastCategory);\n\n return ucwords(strtolower($forecastCategory));\n }\n\n private function importExternalFieldData(array $properties, int $opportunityId): void\n {\n $this->importOpportunityCrmFieldData(\n $properties,\n $this->getCachedOpportunitySyncableFields(),\n $opportunityId\n );\n }\n\n private function getCachedOpportunitySyncableFields(): array\n {\n $cacheKey = (string) $this->config->getId();\n if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {\n $this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();\n }\n\n return $this->cachedOpportunitySyncableFields[$cacheKey];\n }\n\n private function importOpportunityContacts(Opportunity $opportunity, array $associations): void\n {\n // Handle empty or missing contact associations\n if (empty($associations)) {\n // Remove all existing contact associations if none provided\n $this->removeAllOpportunityContacts($opportunity);\n\n return;\n }\n\n // Use differential sync approach for better performance and accuracy\n $this->syncOpportunityContactsDifferential($opportunity, $associations);\n }\n\n /**\n * Sync opportunity contacts using differential approach\n * This compares current vs new associations and only makes necessary changes\n */\n private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void\n {\n $currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);\n $contactAssociationIds = array_keys($contactAssociations);\n\n $contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);\n $contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);\n\n if (empty($contactsToAdd) && empty($contactsToRemove)) {\n return;\n }\n\n $this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);\n\n $this->removeContactAssociations($opportunity, $contactsToRemove);\n $this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);\n }\n\n private function getCurrentContactCrmIds(Opportunity $opportunity): array\n {\n return $opportunity->contacts()\n ->pluck('contacts.crm_provider_id')\n ->toArray();\n }\n\n private function logContactAssociationChanges(\n Opportunity $opportunity,\n array $currentContactCrmIds,\n array $contactAssociations,\n array $contactsToAdd,\n array $contactsToRemove\n ): void {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [\n 'opportunity_id' => $opportunity->getId(),\n 'current_contacts' => $currentContactCrmIds,\n 'new_contacts' => $contactAssociations,\n 'contacts_to_add' => $contactsToAdd,\n 'contacts_to_remove' => $contactsToRemove,\n ]);\n }\n\n private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void\n {\n if (empty($contactsToRemove)) {\n return;\n }\n\n $contactsToDetach = $opportunity->contacts()\n ->whereIn('contacts.crm_provider_id', $contactsToRemove)\n ->pluck('contacts.id')\n ->toArray();\n\n if (! empty($contactsToDetach)) {\n $opportunity->contacts()->detach($contactsToDetach);\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_contact_crm_ids' => $contactsToRemove,\n 'removed_contact_count' => count($contactsToDetach),\n ]);\n }\n }\n\n private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void\n {\n if (empty($contactsToAdd)) {\n return;\n }\n\n $contactsAdded = [];\n foreach ($contactsToAdd as $crmId) {\n $id = $contactAssociations[$crmId];\n\n if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {\n $contactsAdded[] = $crmId;\n }\n }\n\n $this->logAddedContacts($opportunity, $contactsAdded);\n }\n\n private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool\n {\n try {\n return $this->performContactAttachment($opportunity, $id, $crmId);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [\n 'opportunity_id' => $opportunity->getId(),\n 'contact_crm_id' => $crmId,\n 'error' => $e->getMessage(),\n ]);\n\n return false;\n }\n }\n\n private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool\n {\n try {\n $opportunity->contacts()->attach($contactId, [\n 'crm_provider_id' => $crmId,\n ]);\n\n return true;\n } catch (\\Illuminate\\Database\\QueryException $e) {\n if (str_contains($e->getMessage(), 'Duplicate entry')) {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [\n 'contact_id' => $contactId,\n 'contact_crm_id' => $crmId,\n 'opportunity_id' => $opportunity->getId(),\n ]);\n\n return false;\n }\n\n throw $e;\n }\n }\n\n private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void\n {\n if (! empty($contactsAdded)) {\n $this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'added_contact_crm_ids' => $contactsAdded,\n 'added_contacts_count' => count($contactsAdded),\n ]);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\CollectionResponseAssociatedId;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Models\\Account;\nuse Exception;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Jobs\\Crm\\MatchActivitiesToNewOpportunity;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\BusinessProcess;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Models\\Opportunity;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Repositories\\Crm\\CrmEntityRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DealFieldsService;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\HubspotSingleSyncStrategy;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\nuse Jiminny\\Services\\Crm\\OpportunitySyncStrategyResolver;\nuse Jiminny\\Utils\\CurrencyFormatter;\n\n/**\n * Optimized sync methods for better performance\n * These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains\n */\ntrait OpportunitySyncTrait\n{\n private const int BATCH_SIZE = 100;\n private const int BATCH_PROCESS_SIZE = 800;\n\n protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;\n protected CrmEntityRepository $crmEntityRepository;\n protected DealFieldsService $dealFieldsService;\n\n private ?array $cachedClosedDealStages = null;\n private array $cachedBusinessProcesses = [];\n private array $cachedStages = [];\n /** @var array<string, array<string>> keyed by config id */\n private array $cachedOpportunitySyncableFields = [];\n /** @var array<string, mixed> keyed by configId:ownerId */\n private array $cachedOwnerProfiles = [];\n /** @var array<string, mixed> keyed by configId:businessProcessId */\n private array $cachedRecordTypes = [];\n\n public function syncOpportunities(array $parameters, ?string $strategy = null): int\n {\n $startTime = microtime(true);\n $strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);\n $parameters['config'] = $this->config;\n $syncCount = 0;\n $reportedTotal = 0;\n $lastSyncedId = [];\n $strategyNames = [];\n\n try {\n foreach ($strategies as $strategyName => $syncStrategy) {\n $strategyNames[] = $strategyName;\n $this->logger->info(\n '[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,\n ['team' => $this->team->getId()]\n );\n\n $total = 0;\n $lastId = null;\n $buffer = [];\n\n // HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies\n foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {\n $buffer[] = $hsOpportunity;\n\n // process every 800 rows (fits < 1 000 association limit)\n if (\\count($buffer) >= self::BATCH_PROCESS_SIZE) {\n $syncCount += $this->processOpportunityBatch($buffer);\n $buffer = [];\n }\n }\n\n // leftovers\n if ($buffer) {\n $syncCount += $this->processOpportunityBatch($buffer);\n }\n\n $reportedTotal += $total;\n $lastSyncedId = $lastId;\n }\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException | CrmException $e) {\n $this->handleSyncException($e, $parameters);\n }\n\n $durationMs = round((microtime(true) - $startTime) * 1000, 2);\n $this->logger->info(\n '[HubSpot] Synced opportunities',\n [\n 'team' => $this->team->getId(),\n 'strategies' => implode(',', $strategyNames),\n 'sync_count' => $syncCount,\n 'total' => $reportedTotal,\n 'last_synced_id' => $lastSyncedId,\n 'duration_ms' => $durationMs,\n ]\n );\n\n return $reportedTotal;\n }\n\n private function handleSyncException(\\Throwable $e, array $parameters): void\n {\n if (($parameters['since'] ?? null) instanceof Carbon) {\n $parameters['since'] = $parameters['since']->toDateTimeString();\n }\n $parameters['config'] = $this->config->getId();\n\n $this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [\n 'teamId' => $this->team->getUuid(),\n 'parameters' => $parameters,\n 'reason' => $e->getMessage(),\n ]);\n }\n\n /**\n * @inheritdoc\n */\n public function syncOpportunity(string $crmId): ?Opportunity\n {\n $this->client->getOpportunityById($params['crm_id'], $fields);;\n $strategy = $this->opportunitySyncStrategyResolver->resolve(\n $this->config,\n OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,\n );\n\n $parameters = [\n 'config' => $this->config,\n 'crm_id' => $crmId,\n ];\n\n try {\n if (! $strategy instanceof HubspotSingleSyncStrategy) {\n throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');\n }\n\n $hsOpportunity = $strategy->fetchOpportunity($parameters);\n } catch (\\HubSpot\\Client\\Crm\\Deals\\ApiException $e) {\n $this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [\n 'teamId' => $this->team->getUuid(),\n 'crmId' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);\n\n return $this->importOrUpdateOpportunity($hsOpportunity);\n }\n\n /**\n * Process webhook-collected opportunity batches.\n *\n * Drains Redis sets containing company CRM IDs collected from webhook events\n * and dispatches ImportOpportunityBatch jobs for batch processing.\n *\n * @return int Number of opportunity IDs dispatched to jobs\n */\n public function batchSyncOpportunities(): int\n {\n $configId = $this->team->getCrmConfiguration()->getId();\n\n return $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n }\n\n /**\n * Import a batch of opportunities by their CRM IDs.\n * Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().\n *\n * @param array<string> $crmIds HubSpot deal CRM IDs\n *\n * @return array{success: array, failed_ids: array, errors?: array<string, string>}\n */\n public function importOpportunityBatchByIds(array $crmIds): array\n {\n $fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);\n\n $allDeals = [];\n foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {\n $deals = $this->client->getOpportunitiesByIds($chunk, $fields);\n foreach ($deals as $deal) {\n $allDeals[] = $deal;\n }\n }\n\n // IDs not returned by HubSpot are likely deleted or inaccessible deals.\n // These are not failures — retrying won't bring them back.\n $fetchedIds = array_map('strval', array_column($allDeals, 'id'));\n $notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));\n\n if (! empty($notFoundIds)) {\n $this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [\n 'teamId' => $this->team->getId(),\n 'notFoundCount' => \\count($notFoundIds),\n 'notFoundIds' => $notFoundIds,\n 'requestedCount' => \\count($crmIds),\n 'fetchedCount' => \\count($allDeals),\n ]);\n }\n\n if (empty($allDeals)) {\n return ['success' => [], 'failed_ids' => []];\n }\n\n return $this->importOpportunityBatch($allDeals);\n }\n\n private function getClosedDealStages(): array\n {\n if ($this->cachedClosedDealStages !== null) {\n return $this->cachedClosedDealStages;\n }\n\n $stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);\n $data = [\n 'lost' => [],\n 'won' => [],\n ];\n\n foreach ($stages as $stage) {\n if ($stage->probability == 0.00) {\n $data['lost'][] = $stage->crm_provider_id;\n }\n if ($stage->probability == 100.00) {\n $data['won'][] = $stage->crm_provider_id;\n }\n }\n\n $this->cachedClosedDealStages = $data;\n\n return $data;\n }\n\n /**\n * Import deals into the database with pre-fetched associations.\n *\n * API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT\n * caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()\n * where Laravel retries the whole job with backoff. After all retries exhausted,\n * failed() requeues all IDs to Redis.\n *\n * The per-deal loop catches exceptions individually. A deal can end up in three states:\n * - success: imported/updated successfully\n * - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)\n * These are permanent issues — retrying won't fix them.\n * - skipped (null): missing dependencies (no account, unknown pipeline/stage).\n * This is acceptable — the deal cannot be imported until those exist.\n */\n private function importOpportunityBatch(array $deals): array\n {\n $syncedOpportunities = [\n 'success' => [],\n 'failed_ids' => [],\n ];\n $dealIds = array_column($deals, 'id');\n $batchStart = microtime(true);\n $slowDeals = [];\n\n // Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the\n // queue job retries the whole batch and eventually requeues all deal IDs back to Redis.\n try {\n $companyAssocStart = microtime(true);\n $companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');\n $companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);\n\n $contactAssocStart = microtime(true);\n $contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');\n $contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);\n\n $prepareStart = microtime(true);\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n $prepareTimings = [];\n $associationsData = $this->prepareAssociatedEntities(\n $companyAssociations,\n $contactAssociations,\n $prepareTimings\n );\n $prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);\n\n $missingCompanies = count(array_diff(\n $allCompanyIds,\n array_keys($associationsData['company_id_mappings'] ?? [])\n ));\n $missingContacts = count(array_diff(\n $allContactIds,\n array_keys($associationsData['contact_id_mappings'] ?? [])\n ));\n\n $existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(\n $this->config,\n array_map('strval', $dealIds)\n );\n $existingCrmIdSet = array_flip($existingCrmIds);\n } catch (\\Throwable $e) {\n $this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [\n 'teamId' => $this->team->getId(),\n 'dealCount' => count($dealIds),\n 'error' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $loopStart = microtime(true);\n foreach ($deals as $deal) {\n $dealStart = microtime(true);\n\n try {\n $deal['associations'] = $this->prepareAssociationsForOpportunity(\n $deal['id'],\n $companyAssociations,\n $contactAssociations,\n $associationsData\n );\n\n $syncedOpportunity = $this->importOrUpdateOpportunity(\n $deal,\n isset($existingCrmIdSet[(string) $deal['id']])\n );\n if ($syncedOpportunity) {\n $syncedOpportunities['success'][] = $syncedOpportunity;\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [\n 'teamId' => $this->team->getId(),\n 'crmId' => $deal['id'],\n 'error' => $e->getMessage(),\n ]);\n $syncedOpportunities['failed_ids'][] = $deal['id'];\n $syncedOpportunities['errors'][$deal['id']] = $e->getMessage();\n }\n\n $dealMs = (int) round((microtime(true) - $dealStart) * 1000);\n if ($dealMs > 1000) {\n $slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];\n }\n }\n $loopMs = (int) round((microtime(true) - $loopStart) * 1000);\n $totalMs = (int) round((microtime(true) - $batchStart) * 1000);\n\n $this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [\n 'teamId' => $this->team->getId(),\n 'deal_count' => count($deals),\n 'total_ms' => $totalMs,\n 'company_assoc_api_ms' => $companyAssocMs,\n 'contact_assoc_api_ms' => $contactAssocMs,\n 'prepare_entities_ms' => $prepareMs,\n 'prepare_accounts_ms' => $prepareTimings['accounts_ms'],\n 'prepare_contacts_ms' => $prepareTimings['contacts_ms'],\n 'total_companies' => count($allCompanyIds),\n 'missing_companies' => $missingCompanies,\n 'total_contacts' => count($allContactIds),\n 'missing_contacts' => $missingContacts,\n 'deals_loop_ms' => $loopMs,\n 'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,\n 'slow_deals_count' => count($slowDeals),\n 'slow_deals' => array_slice($slowDeals, 0, 10),\n ]);\n\n return $syncedOpportunities;\n }\n\n /**\n * Prepare associated entities for opportunities with optimized batch processing\n * Returns structured data with CRM ID to DB ID mappings for each opportunity\n */\n private function prepareAssociatedEntities(\n array $companyAssociations,\n array $contactAssociations,\n array &$timings = []\n ): array {\n // Step 1: Collect all unique company and contact IDs from associations\n $allCompanyIds = $this->flattenAssociationIds($companyAssociations);\n $allContactIds = $this->flattenAssociationIds($contactAssociations);\n\n // Step 2: Batch sync missing entities and get CRM ID to DB ID mappings\n $companyIdMappings = [];\n $contactIdMappings = [];\n $accountsMs = 0;\n $contactsMs = 0;\n\n if (! empty($allCompanyIds)) {\n $start = microtime(true);\n $companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);\n $accountsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n if (! empty($allContactIds)) {\n $start = microtime(true);\n $contactIdMappings = $this->prepareAssociatedContacts($allContactIds);\n $contactsMs = (int) round((microtime(true) - $start) * 1000);\n }\n\n $timings = [\n 'accounts_ms' => $accountsMs,\n 'contacts_ms' => $contactsMs,\n ];\n\n return [\n 'company_id_mappings' => $companyIdMappings,\n 'contact_id_mappings' => $contactIdMappings,\n ];\n }\n\n /**\n * Flatten association data to get unique IDs\n */\n private function flattenAssociationIds(array $associations): array\n {\n $ids = [];\n foreach ($associations as $dealAssociations) {\n if (is_array($dealAssociations)) {\n foreach ($dealAssociations as $id) {\n $ids[$id] = true;\n }\n }\n }\n\n return array_keys($ids);\n }\n\n /**\n * Batch sync missing accounts\n */\n private function prepareAssociatedAccounts(array $companyIds): array\n {\n // Find which accounts already exist (lean covering-index lookup)\n $existingAccountsData = $this->crmEntityRepository\n ->getExistingAccountIdsMap($this->config, $companyIds);\n\n $missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));\n\n if (empty($missingCompanyIds)) {\n return $existingAccountsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [\n 'teamId' => $this->team->getUuid(),\n 'total_companies' => count($companyIds),\n 'existing_companies' => count($existingAccountsData),\n 'missing_companies' => count($missingCompanyIds),\n ]);\n\n // we already have limit on opportunity ids count\n // Initialize variable before try block\n $syncedAccountsData = [];\n\n try {\n $syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [\n 'size' => count($missingCompanyIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedAccountsData = [];\n }\n\n return $existingAccountsData + $syncedAccountsData;\n }\n\n /**\n * Prepare associated contacts - find existing and sync missing ones\n * Returns mapping of CRM ID to DB ID\n */\n private function prepareAssociatedContacts(array $contactIds): array\n {\n // Find which contacts already exist (lean covering-index lookup)\n $existingContactsData = $this->crmEntityRepository\n ->getExistingContactIdsMap($this->config, $contactIds);\n\n $missingContactIds = array_diff($contactIds, array_keys($existingContactsData));\n\n if (empty($missingContactIds)) {\n return $existingContactsData;\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [\n 'teamId' => $this->team->getUuid(),\n 'total_contacts' => count($contactIds),\n 'existing_contacts' => count($existingContactsData),\n 'missing_contacts' => count($missingContactIds),\n ]);\n\n // Sync missing contacts using batch API\n try {\n $syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [\n 'size' => count($missingContactIds),\n 'error' => $e->getMessage(),\n ]);\n $syncedContactsData = [];\n }\n\n return $existingContactsData + $syncedContactsData;\n }\n\n private function batchSyncCrmObjects(string $objectType, array $crmIds): array\n {\n $syncObjects = [];\n $crmObjectIds = array_values($crmIds);\n\n foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {\n try {\n $objects = $objectType === 'companies' ?\n $this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :\n $this->client->getContactsByIds($chunk, $this->getContactFields());\n\n foreach ($objects as $objectId => $objectData) {\n $this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);\n }\n\n $this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [\n 'requested_count' => count($chunk),\n 'synced_count' => count($objects),\n ]);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [\n 'ids' => $chunk,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n return $syncObjects;\n }\n\n private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void\n {\n try {\n $object = $objectType === 'companies' ?\n $this->importAccount($objectData) :\n $this->importContact($objectData);\n\n if ($object) {\n $syncObjects[$object->getCrmProviderId()] = $object->getId();\n }\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [\n 'id' => $objectId,\n 'error' => $e->getMessage(),\n ]);\n }\n }\n\n /**\n * Prepare associations for a single opportunity\n *\n * The return value is an array with the following structure:\n * [\n * 'companies' => [\n * $companyCrmId => $companyId,\n * ...\n * ],\n * 'contacts' => [\n * $contactCrmId => $contactId,\n * ...\n * ],\n * 'account_id' => $accountId,\n * ]\n */\n private function prepareAssociationsForOpportunity(\n string $oppCrmId,\n array $companyAssociations,\n array $contactAssociations,\n array $associationsData\n ): array {\n $associations = [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n\n $oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];\n foreach ($oppCompanyIds as $companyCrmId) {\n if (isset($associationsData['company_id_mappings'][$companyCrmId])) {\n $associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];\n\n // Set primary account (first company becomes primary account)\n if ($associations['account_id'] === null) {\n $associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];\n }\n }\n }\n\n $oppContactIds = $contactAssociations[$oppCrmId] ?? [];\n foreach ($oppContactIds as $contactCrmId) {\n if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {\n $associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];\n }\n }\n\n return $associations;\n }\n\n /**\n * Update only associations for an opportunity\n */\n private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void\n {\n // Update contact associations\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n // Update company (account) associations\n $this->updateOpportunityAccount($opportunity, $associations['account_id']);\n }\n\n /**\n * Remove all contact associations from an opportunity\n */\n private function removeAllOpportunityContacts(Opportunity $opportunity): void\n {\n $currentCount = (int) $opportunity->contacts()->count();\n\n if ($currentCount > 0) {\n $opportunity->contacts()->detach();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_count' => $currentCount,\n ]);\n }\n }\n\n private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void\n {\n if ($accountId === null) {\n // No account ID provided - keep current account\n return;\n }\n\n $currentAccountId = $opportunity->getAccountId();\n\n // Only update if account has changed\n if ($currentAccountId !== $accountId) {\n $opportunity->account_id = $accountId;\n $opportunity->save();\n\n $this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [\n 'opportunity_id' => $opportunity->getId(),\n 'old_account_id' => $currentAccountId,\n 'new_account_id' => $accountId,\n ]);\n }\n }\n\n /**\n * Find existing opportunities by external IDs (OPTIMIZED VERSION)\n * Uses batch query for better performance\n */\n private function findExistingOpportunities(array $crmIds): Collection\n {\n return $this->crmEntityRepository\n ->findOpportunitiesByExternalIds($this->config, $crmIds);\n }\n\n private function processOpportunityBatch(array $opportunities): int\n {\n $syncedOpportunities = $this->importOpportunityBatch($opportunities);\n\n return count($syncedOpportunities['success'] ?? []);\n }\n\n /**\n * Convert single deal associations from HubSpot format to internal format\n * Handles both HubSpot SDK objects and array formats\n *\n * @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed\n *\n * @return array Processed associations with DB IDs\n */\n private function convertDealAssociations(array $opportunityAssociations): array\n {\n $associations = $this->initializeAssociationsStructure();\n\n if (empty($opportunityAssociations)) {\n return $associations;\n }\n\n $associationIds = $this->extractAssociationIds($opportunityAssociations);\n\n $this->processCompanyAssociations($associationIds, $associations);\n $this->processContactAssociations($associationIds, $associations);\n\n return $associations;\n }\n\n private function initializeAssociationsStructure(): array\n {\n return [\n 'companies' => [],\n 'contacts' => [],\n 'account_id' => null, // Primary account for opportunity\n ];\n }\n\n private function extractAssociationIds(array $opportunityAssociations): array\n {\n $associationIds = [];\n\n foreach ($opportunityAssociations as $type => $associationData) {\n if (! empty($associationData)) {\n $associationIds[$type] = $this->convertSingleDealAssociations($associationData);\n }\n }\n\n return $associationIds;\n }\n\n private function processCompanyAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['companies'])) {\n return;\n }\n\n $companyId = $associationIds['companies'][0];\n $account = $this->findOrSyncAccount($companyId);\n\n if ($account instanceof Account) {\n $associations['companies'][$companyId] = $account->getId();\n $associations['account_id'] = $account->getId();\n }\n }\n\n private function processContactAssociations(array $associationIds, array &$associations): void\n {\n if (empty($associationIds['contacts'])) {\n return;\n }\n\n foreach ($associationIds['contacts'] as $contactId) {\n $contact = $this->findOrSyncContact($contactId);\n\n if ($contact instanceof Contact) {\n $associations['contacts'][$contactId] = $contact->getId();\n }\n }\n }\n\n private function findOrSyncAccount(string $companyId): ?Account\n {\n $account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);\n\n if (! $account instanceof Account) {\n $account = $this->syncAccount($companyId);\n }\n\n return $account;\n }\n\n private function findOrSyncContact(string $contactId): ?Contact\n {\n $contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);\n\n if (! $contact instanceof Contact) {\n $contact = $this->syncContact($contactId);\n }\n\n return $contact;\n }\n\n private function convertSingleDealAssociations($opportunityAssociations = null): array\n {\n $associationData = [];\n\n if ($opportunityAssociations === null) {\n return $associationData;\n }\n\n // Handle array input (from extractAssociationIds)\n if (is_array($opportunityAssociations)) {\n return $opportunityAssociations;\n }\n\n // Handle CollectionResponseAssociatedId object\n if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {\n foreach ($opportunityAssociations->getResults() as $association) {\n $associationData[] = $association->getId();\n }\n }\n\n return $associationData;\n }\n\n private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity\n {\n if (empty($crmData['properties'])) {\n return null;\n }\n\n $crmId = (string) $crmData['id'];\n $properties = $crmData['properties'];\n $associations = $crmData['associations'] ?? [];\n\n $opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(\n $this->config,\n $crmId\n );\n\n if ($opportunityExists) {\n return $this->updateOpportunity($crmId, $properties, $associations);\n }\n\n return $this->createOpportunity($crmId, $properties, $associations);\n }\n\n /**\n * Create new opportunity\n */\n private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n if (! $accountId) {\n return null;\n }\n\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n if (! $businessProcess) {\n return null;\n }\n\n $stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);\n if (! $stage) {\n return null;\n }\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->importOpportunityContacts($opportunity, $associations['contacts']);\n\n if ($opportunity->wasRecentlyCreated) {\n MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());\n }\n\n return $opportunity;\n }\n\n /**\n * Update existing opportunity\n */\n private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity\n {\n $accountId = $this->resolveAccountId($associations);\n $businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);\n $stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;\n\n $data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);\n\n $attributes = [\n 'crm_configuration_id' => $this->config->getId(),\n 'crm_provider_id' => $crmId,\n ];\n\n $values = array_merge($attributes, $data);\n $opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);\n\n $this->importExternalFieldData($properties, $opportunity->getId());\n $this->updateOpportunityAssociations($opportunity, $associations);\n\n return $opportunity;\n }\n\n private function resolveAccountId(array $associations): ?int\n {\n if (! empty($associations['account_id'])) {\n return $associations['account_id'];\n }\n\n if (empty($associations)) {\n return null;\n }\n\n // Fallback: use first company as account (currently SDK returns one company)\n foreach ($associations['companies'] as $accountId) {\n return $accountId;\n }\n\n return null;\n }\n\n private function buildOpportunityData(\n array $properties,\n ?int $accountId,\n ?BusinessProcess $businessProcess,\n ?Stage $stage\n ): array {\n $ownerId = null;\n $profile = null;\n if (! empty($properties['hubspot_owner_id'])) {\n $ownerId = $properties['hubspot_owner_id'];\n $profile = $this->getCachedOwnerProfile((string) $ownerId);\n }\n\n $name = 'Unknown';\n if (isset($properties['dealname'])) {\n $name = mb_strimwidth($properties['dealname'], 0, 128);\n }\n\n $amount = $this->resolveAmount($properties);\n $currency = $properties['deal_currency_code'] ?? null;\n\n $closeDate = null;\n if (! empty($properties['closedate'])) {\n $closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');\n }\n\n $remotelyCreatedAt = null;\n if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {\n $date = $this->parseCleanDatetime($properties['createdate']);\n $remotelyCreatedAt = $date?->format('Y-m-d H:i:s');\n }\n\n $closedStages = $this->getClosedDealStages();\n $isWon = in_array($properties['dealstage'], $closedStages['won']);\n $isLost = in_array($properties['dealstage'], $closedStages['lost']);\n\n $data = [\n 'team_id' => $this->team->getId(),\n 'user_id' => $profile ? $profile->user_id : null,\n 'owner_id' => $ownerId,\n 'name' => $name,\n 'value' => ! empty($amount) ? $amount : null,\n 'currency_code' => CurrencyFormatter::formatCode($currency),\n 'close_date' => $closeDate,\n 'is_closed' => $isWon || $isLost,\n 'is_won' => $isWon,\n 'remotely_created_at' => $remotelyCreatedAt,\n 'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),\n 'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),\n ];\n\n if ($accountId) {\n $data['account_id'] = $accountId;\n }\n\n if ($stage) {\n $data['stage_id'] = $stage->id;\n }\n\n if ($businessProcess) {\n $recordType = $this->getCachedBusinessProcessRecordType($businessProcess);\n if ($recordType) {\n $data['record_type_id'] = $recordType->id;\n }\n }\n\n return $data;\n }\n\n private function getCachedOwnerProfile(string $ownerId): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $ownerId;\n if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {\n return $this->cachedOwnerProfiles[$cacheKey];\n }\n\n $profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);\n $this->cachedOwnerProfiles[$cacheKey] = $profile;\n\n return $profile;\n }\n\n private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed\n {\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId();\n if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {\n return $this->cachedRecordTypes[$cacheKey];\n }\n\n $recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);\n $this->cachedRecordTypes[$cacheKey] = $recordType;\n\n return $recordType;\n }\n\n private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess\n {\n if ($pipelineId === null) {\n return null;\n }\n\n $cacheKey = $this->getBusinessProcessCacheKey($pipelineId);\n if (isset($this->cachedBusinessProcesses[$cacheKey])) {\n return $this->cachedBusinessProcesses[$cacheKey];\n }\n\n $businessProcess = $this->getBusinessProcess($pipelineId);\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->importStages();\n $businessProcess = $this->getBusinessProcess($pipelineId);\n }\n\n if (! $businessProcess instanceof BusinessProcess) {\n $this->logger->info(\n '[HubSpot] Deal is not attached to a pipeline',\n [\n 'pipeline' => $pipelineId]\n );\n }\n\n $this->cachedBusinessProcesses[$cacheKey] = $businessProcess;\n\n return $businessProcess;\n }\n\n private function getBusinessProcess(string $pipelineId): ?BusinessProcess\n {\n return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);\n }\n\n private function getBusinessProcessCacheKey(string $pipelineId): string\n {\n return $this->config->getId() . '_' . $pipelineId;\n }\n\n private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage\n {\n if (empty($stageId)) {\n return null;\n }\n\n $cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;\n if (isset($this->cachedStages[$cacheKey])) {\n return $this->cachedStages[$cacheKey];\n }\n\n $stage = $this->crmEntityRepository->getPipelineStageByConditions(\n $businessProcess,\n [\n 'crm_provider_id' => $stageId,\n 'type' => Stage::TYPE_OPPORTUNITY,\n ]\n );\n\n if ($stage === null) {\n $this->importStages(null, $stageId);\n }\n\n if ($stage === null) {\n $this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);\n }\n\n $this->cachedStages[$cacheKey] = $stage;\n\n return $stage;\n }\n\n private function resolveAmount(array $properties): ?string\n {\n $amount = null;\n if (! empty($properties['amount'])) {\n $amount = str_replace(',', '', $properties['amount']);\n }\n\n if ($this->config->hasDefaultCurrencyFieldSet()) {\n $valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();\n $amount = $properties[$valueFieldName] ?? $amount;\n }\n\n return $amount;\n }\n\n private function parseCleanDatetime(string $datetime): ?Carbon\n {\n // Treat pre-1980 values as invalid\n $minValidDate = Carbon::parse('1980-01-01 00:00:00');\n\n try {\n $date = Carbon::parse($datetime);\n\n if ($minValidDate->gt($date)) {\n return null;\n }\n\n return $date;\n } catch (Exception) {\n return null; // On parse error, treat as null\n }\n }\n\n private function resolveDealProbability(?string $stageProbability): int\n {\n if ($stageProbability === null) {\n return 0;\n }\n\n $probability = (float) $stageProbability;\n\n return $probability > 1 ? 0 : (int) ($probability * 100);\n }\n\n private function resolveForecastCategory(?string $forecastCategory): string\n {\n if (! $forecastCategory) {\n return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;\n }\n\n $forecastCategory = str_replace('_', ' ', $forecastCategory);\n\n return ucwords(strtolower($forecastCategory));\n }\n\n private function importExternalFieldData(array $properties, int $opportunityId): void\n {\n $this->importOpportunityCrmFieldData(\n $properties,\n $this->getCachedOpportunitySyncableFields(),\n $opportunityId\n );\n }\n\n private function getCachedOpportunitySyncableFields(): array\n {\n $cacheKey = (string) $this->config->getId();\n if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {\n $this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();\n }\n\n return $this->cachedOpportunitySyncableFields[$cacheKey];\n }\n\n private function importOpportunityContacts(Opportunity $opportunity, array $associations): void\n {\n // Handle empty or missing contact associations\n if (empty($associations)) {\n // Remove all existing contact associations if none provided\n $this->removeAllOpportunityContacts($opportunity);\n\n return;\n }\n\n // Use differential sync approach for better performance and accuracy\n $this->syncOpportunityContactsDifferential($opportunity, $associations);\n }\n\n /**\n * Sync opportunity contacts using differential approach\n * This compares current vs new associations and only makes necessary changes\n */\n private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void\n {\n $currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);\n $contactAssociationIds = array_keys($contactAssociations);\n\n $contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);\n $contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);\n\n if (empty($contactsToAdd) && empty($contactsToRemove)) {\n return;\n }\n\n $this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);\n\n $this->removeContactAssociations($opportunity, $contactsToRemove);\n $this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);\n }\n\n private function getCurrentContactCrmIds(Opportunity $opportunity): array\n {\n return $opportunity->contacts()\n ->pluck('contacts.crm_provider_id')\n ->toArray();\n }\n\n private function logContactAssociationChanges(\n Opportunity $opportunity,\n array $currentContactCrmIds,\n array $contactAssociations,\n array $contactsToAdd,\n array $contactsToRemove\n ): void {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [\n 'opportunity_id' => $opportunity->getId(),\n 'current_contacts' => $currentContactCrmIds,\n 'new_contacts' => $contactAssociations,\n 'contacts_to_add' => $contactsToAdd,\n 'contacts_to_remove' => $contactsToRemove,\n ]);\n }\n\n private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void\n {\n if (empty($contactsToRemove)) {\n return;\n }\n\n $contactsToDetach = $opportunity->contacts()\n ->whereIn('contacts.crm_provider_id', $contactsToRemove)\n ->pluck('contacts.id')\n ->toArray();\n\n if (! empty($contactsToDetach)) {\n $opportunity->contacts()->detach($contactsToDetach);\n\n $this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'removed_contact_crm_ids' => $contactsToRemove,\n 'removed_contact_count' => count($contactsToDetach),\n ]);\n }\n }\n\n private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void\n {\n if (empty($contactsToAdd)) {\n return;\n }\n\n $contactsAdded = [];\n foreach ($contactsToAdd as $crmId) {\n $id = $contactAssociations[$crmId];\n\n if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {\n $contactsAdded[] = $crmId;\n }\n }\n\n $this->logAddedContacts($opportunity, $contactsAdded);\n }\n\n private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool\n {\n try {\n return $this->performContactAttachment($opportunity, $id, $crmId);\n } catch (\\Throwable $e) {\n $this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [\n 'opportunity_id' => $opportunity->getId(),\n 'contact_crm_id' => $crmId,\n 'error' => $e->getMessage(),\n ]);\n\n return false;\n }\n }\n\n private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool\n {\n try {\n $opportunity->contacts()->attach($contactId, [\n 'crm_provider_id' => $crmId,\n ]);\n\n return true;\n } catch (\\Illuminate\\Database\\QueryException $e) {\n if (str_contains($e->getMessage(), 'Duplicate entry')) {\n $this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [\n 'contact_id' => $contactId,\n 'contact_crm_id' => $crmId,\n 'opportunity_id' => $opportunity->getId(),\n ]);\n\n return false;\n }\n\n throw $e;\n }\n }\n\n private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void\n {\n if (! empty($contactsAdded)) {\n $this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [\n 'opportunity_id' => $opportunity->getId(),\n 'added_contact_crm_ids' => $contactsAdded,\n 'added_contacts_count' => count($contactsAdded),\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1689271975849076535
|
-8493339382995643936
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
34
2
22
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use HubSpot\Client\Crm\Deals\Model\CollectionResponseAssociatedId;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Models\Account;
use Exception;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Jobs\Crm\MatchActivitiesToNewOpportunity;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\BusinessProcess;
use Jiminny\Exceptions\CrmException;
use Jiminny\Models\Opportunity;
use Illuminate\Support\Collection;
use Jiminny\Models\Stage;
use Jiminny\Repositories\Crm\CrmEntityRepository;
use Jiminny\Services\Crm\Hubspot\DealFieldsService;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\HubspotSingleSyncStrategy;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
use Jiminny\Services\Crm\OpportunitySyncStrategyResolver;
use Jiminny\Utils\CurrencyFormatter;
/**
* Optimized sync methods for better performance
* These methods can be integrated into SyncCrmEntitiesTrait for significant performance gains
*/
trait OpportunitySyncTrait
{
private const int BATCH_SIZE = 100;
private const int BATCH_PROCESS_SIZE = 800;
protected OpportunitySyncStrategyResolver $opportunitySyncStrategyResolver;
protected CrmEntityRepository $crmEntityRepository;
protected DealFieldsService $dealFieldsService;
private ?array $cachedClosedDealStages = null;
private array $cachedBusinessProcesses = [];
private array $cachedStages = [];
/** @var array<string, array<string>> keyed by config id */
private array $cachedOpportunitySyncableFields = [];
/** @var array<string, mixed> keyed by configId:ownerId */
private array $cachedOwnerProfiles = [];
/** @var array<string, mixed> keyed by configId:businessProcessId */
private array $cachedRecordTypes = [];
public function syncOpportunities(array $parameters, ?string $strategy = null): int
{
$startTime = microtime(true);
$strategies = $this->opportunitySyncStrategyResolver->getStrategies($this->config, $strategy);
$parameters['config'] = $this->config;
$syncCount = 0;
$reportedTotal = 0;
$lastSyncedId = [];
$strategyNames = [];
try {
foreach ($strategies as $strategyName => $syncStrategy) {
$strategyNames[] = $strategyName;
$this->logger->info(
'[' . $this->getDisplayName() . '] Syncing opportunities using strategy: ' . $strategyName,
['team' => $this->team->getId()]
);
$total = 0;
$lastId = null;
$buffer = [];
// HubspotWebhookBatchSyncStrategy returns empty generator, this is for other strategies
foreach ($syncStrategy->fetchOpportunities($parameters, $total, $lastId) as $hsOpportunity) {
$buffer[] = $hsOpportunity;
// process every 800 rows (fits < 1 000 association limit)
if (\count($buffer) >= self::BATCH_PROCESS_SIZE) {
$syncCount += $this->processOpportunityBatch($buffer);
$buffer = [];
}
}
// leftovers
if ($buffer) {
$syncCount += $this->processOpportunityBatch($buffer);
}
$reportedTotal += $total;
$lastSyncedId = $lastId;
}
} catch (\HubSpot\Client\Crm\Deals\ApiException | CrmException $e) {
$this->handleSyncException($e, $parameters);
}
$durationMs = round((microtime(true) - $startTime) * 1000, 2);
$this->logger->info(
'[HubSpot] Synced opportunities',
[
'team' => $this->team->getId(),
'strategies' => implode(',', $strategyNames),
'sync_count' => $syncCount,
'total' => $reportedTotal,
'last_synced_id' => $lastSyncedId,
'duration_ms' => $durationMs,
]
);
return $reportedTotal;
}
private function handleSyncException(\Throwable $e, array $parameters): void
{
if (($parameters['since'] ?? null) instanceof Carbon) {
$parameters['since'] = $parameters['since']->toDateTimeString();
}
$parameters['config'] = $this->config->getId();
$this->logger->warning('[' . $this->getDisplayName() . '] Sync opportunities failed', [
'teamId' => $this->team->getUuid(),
'parameters' => $parameters,
'reason' => $e->getMessage(),
]);
}
/**
* @inheritdoc
*/
public function syncOpportunity(string $crmId): ?Opportunity
{
$this->client->getOpportunityById($params['crm_id'], $fields);;
$strategy = $this->opportunitySyncStrategyResolver->resolve(
$this->config,
OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,
);
$parameters = [
'config' => $this->config,
'crm_id' => $crmId,
];
try {
if (! $strategy instanceof HubspotSingleSyncStrategy) {
throw new InvalidArgumentException('Strategy must by HubspotSingleSyncStrategy');
}
$hsOpportunity = $strategy->fetchOpportunity($parameters);
} catch (\HubSpot\Client\Crm\Deals\ApiException $e) {
$this->logger->info('[' . $this->getDisplayName() . '] Opportunity not found', [
'teamId' => $this->team->getUuid(),
'crmId' => $crmId,
'reason' => $e->getMessage(),
]);
return null;
}
$hsOpportunity['associations'] = $this->convertDealAssociations($hsOpportunity['associations'] ?? []);
return $this->importOrUpdateOpportunity($hsOpportunity);
}
/**
* Process webhook-collected opportunity batches.
*
* Drains Redis sets containing company CRM IDs collected from webhook events
* and dispatches ImportOpportunityBatch jobs for batch processing.
*
* @return int Number of opportunity IDs dispatched to jobs
*/
public function batchSyncOpportunities(): int
{
$configId = $this->team->getCrmConfiguration()->getId();
return $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
}
/**
* Import a batch of opportunities by their CRM IDs.
* Fetches opportunity data from HubSpot API and delegates to importOpportunityBatch().
*
* @param array<string> $crmIds HubSpot deal CRM IDs
*
* @return array{success: array, failed_ids: array, errors?: array<string, string>}
*/
public function importOpportunityBatchByIds(array $crmIds): array
{
$fields = $this->dealFieldsService->getFieldsForConfiguration($this->config);
$allDeals = [];
foreach (array_chunk($crmIds, self::BATCH_SIZE) as $chunk) {
$deals = $this->client->getOpportunitiesByIds($chunk, $fields);
foreach ($deals as $deal) {
$allDeals[] = $deal;
}
}
// IDs not returned by HubSpot are likely deleted or inaccessible deals.
// These are not failures — retrying won't bring them back.
$fetchedIds = array_map('strval', array_column($allDeals, 'id'));
$notFoundIds = array_values(array_diff(array_map('strval', $crmIds), $fetchedIds));
if (! empty($notFoundIds)) {
$this->logger->info('[' . $this->getDisplayName() . '] CRM IDs not found in HubSpot (likely deleted)', [
'teamId' => $this->team->getId(),
'notFoundCount' => \count($notFoundIds),
'notFoundIds' => $notFoundIds,
'requestedCount' => \count($crmIds),
'fetchedCount' => \count($allDeals),
]);
}
if (empty($allDeals)) {
return ['success' => [], 'failed_ids' => []];
}
return $this->importOpportunityBatch($allDeals);
}
private function getClosedDealStages(): array
{
if ($this->cachedClosedDealStages !== null) {
return $this->cachedClosedDealStages;
}
$stages = $this->crmEntityRepository->getOpportunityClosedStages($this->config);
$data = [
'lost' => [],
'won' => [],
];
foreach ($stages as $stage) {
if ($stage->probability == 0.00) {
$data['lost'][] = $stage->crm_provider_id;
}
if ($stage->probability == 100.00) {
$data['won'][] = $stage->crm_provider_id;
}
}
$this->cachedClosedDealStages = $data;
return $data;
}
/**
* Import deals into the database with pre-fetched associations.
*
* API calls here (getAssociationsData, getExistingOpportunityCrmIds) are NOT
* caught — if they throw, the exception propagates to ImportOpportunityBatch::handle()
* where Laravel retries the whole job with backoff. After all retries exhausted,
* failed() requeues all IDs to Redis.
*
* The per-deal loop catches exceptions individually. A deal can end up in three states:
* - success: imported/updated successfully
* - failed_ids: exception thrown (DB constraint violation, corrupt data, etc.)
* These are permanent issues — retrying won't fix them.
* - skipped (null): missing dependencies (no account, unknown pipeline/stage).
* This is acceptable — the deal cannot be imported until those exist.
*/
private function importOpportunityBatch(array $deals): array
{
$syncedOpportunities = [
'success' => [],
'failed_ids' => [],
];
$dealIds = array_column($deals, 'id');
$batchStart = microtime(true);
$slowDeals = [];
// Shared association/existing-ID preparation is batch-level state. If it fails, rethrow so the
// queue job retries the whole batch and eventually requeues all deal IDs back to Redis.
try {
$companyAssocStart = microtime(true);
$companyAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'companies');
$companyAssocMs = (int) round((microtime(true) - $companyAssocStart) * 1000);
$contactAssocStart = microtime(true);
$contactAssociations = $this->client->getAssociationsData($dealIds, 'deals', 'contacts');
$contactAssocMs = (int) round((microtime(true) - $contactAssocStart) * 1000);
$prepareStart = microtime(true);
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
$prepareTimings = [];
$associationsData = $this->prepareAssociatedEntities(
$companyAssociations,
$contactAssociations,
$prepareTimings
);
$prepareMs = (int) round((microtime(true) - $prepareStart) * 1000);
$missingCompanies = count(array_diff(
$allCompanyIds,
array_keys($associationsData['company_id_mappings'] ?? [])
));
$missingContacts = count(array_diff(
$allContactIds,
array_keys($associationsData['contact_id_mappings'] ?? [])
));
$existingCrmIds = $this->crmEntityRepository->getExistingOpportunityCrmIds(
$this->config,
array_map('strval', $dealIds)
);
$existingCrmIdSet = array_flip($existingCrmIds);
} catch (\Throwable $e) {
$this->logger->error('[' . $this->getDisplayName() . '] Failed to fetch associations or existing IDs', [
'teamId' => $this->team->getId(),
'dealCount' => count($dealIds),
'error' => $e->getMessage(),
]);
throw $e;
}
$loopStart = microtime(true);
foreach ($deals as $deal) {
$dealStart = microtime(true);
try {
$deal['associations'] = $this->prepareAssociationsForOpportunity(
$deal['id'],
$companyAssociations,
$contactAssociations,
$associationsData
);
$syncedOpportunity = $this->importOrUpdateOpportunity(
$deal,
isset($existingCrmIdSet[(string) $deal['id']])
);
if ($syncedOpportunity) {
$syncedOpportunities['success'][] = $syncedOpportunity;
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import opportunity', [
'teamId' => $this->team->getId(),
'crmId' => $deal['id'],
'error' => $e->getMessage(),
]);
$syncedOpportunities['failed_ids'][] = $deal['id'];
$syncedOpportunities['errors'][$deal['id']] = $e->getMessage();
}
$dealMs = (int) round((microtime(true) - $dealStart) * 1000);
if ($dealMs > 1000) {
$slowDeals[] = ['crmId' => $deal['id'], 'ms' => $dealMs];
}
}
$loopMs = (int) round((microtime(true) - $loopStart) * 1000);
$totalMs = (int) round((microtime(true) - $batchStart) * 1000);
$this->logger->info('[' . $this->getDisplayName() . '] importOpportunityBatch timing', [
'teamId' => $this->team->getId(),
'deal_count' => count($deals),
'total_ms' => $totalMs,
'company_assoc_api_ms' => $companyAssocMs,
'contact_assoc_api_ms' => $contactAssocMs,
'prepare_entities_ms' => $prepareMs,
'prepare_accounts_ms' => $prepareTimings['accounts_ms'],
'prepare_contacts_ms' => $prepareTimings['contacts_ms'],
'total_companies' => count($allCompanyIds),
'missing_companies' => $missingCompanies,
'total_contacts' => count($allContactIds),
'missing_contacts' => $missingContacts,
'deals_loop_ms' => $loopMs,
'avg_deal_ms' => ! empty($deals) ? (int) round($loopMs / count($deals)) : 0,
'slow_deals_count' => count($slowDeals),
'slow_deals' => array_slice($slowDeals, 0, 10),
]);
return $syncedOpportunities;
}
/**
* Prepare associated entities for opportunities with optimized batch processing
* Returns structured data with CRM ID to DB ID mappings for each opportunity
*/
private function prepareAssociatedEntities(
array $companyAssociations,
array $contactAssociations,
array &$timings = []
): array {
// Step 1: Collect all unique company and contact IDs from associations
$allCompanyIds = $this->flattenAssociationIds($companyAssociations);
$allContactIds = $this->flattenAssociationIds($contactAssociations);
// Step 2: Batch sync missing entities and get CRM ID to DB ID mappings
$companyIdMappings = [];
$contactIdMappings = [];
$accountsMs = 0;
$contactsMs = 0;
if (! empty($allCompanyIds)) {
$start = microtime(true);
$companyIdMappings = $this->prepareAssociatedAccounts($allCompanyIds);
$accountsMs = (int) round((microtime(true) - $start) * 1000);
}
if (! empty($allContactIds)) {
$start = microtime(true);
$contactIdMappings = $this->prepareAssociatedContacts($allContactIds);
$contactsMs = (int) round((microtime(true) - $start) * 1000);
}
$timings = [
'accounts_ms' => $accountsMs,
'contacts_ms' => $contactsMs,
];
return [
'company_id_mappings' => $companyIdMappings,
'contact_id_mappings' => $contactIdMappings,
];
}
/**
* Flatten association data to get unique IDs
*/
private function flattenAssociationIds(array $associations): array
{
$ids = [];
foreach ($associations as $dealAssociations) {
if (is_array($dealAssociations)) {
foreach ($dealAssociations as $id) {
$ids[$id] = true;
}
}
}
return array_keys($ids);
}
/**
* Batch sync missing accounts
*/
private function prepareAssociatedAccounts(array $companyIds): array
{
// Find which accounts already exist (lean covering-index lookup)
$existingAccountsData = $this->crmEntityRepository
->getExistingAccountIdsMap($this->config, $companyIds);
$missingCompanyIds = array_diff($companyIds, array_keys($existingAccountsData));
if (empty($missingCompanyIds)) {
return $existingAccountsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing accounts', [
'teamId' => $this->team->getUuid(),
'total_companies' => count($companyIds),
'existing_companies' => count($existingAccountsData),
'missing_companies' => count($missingCompanyIds),
]);
// we already have limit on opportunity ids count
// Initialize variable before try block
$syncedAccountsData = [];
try {
$syncedAccountsData = $this->batchSyncCrmObjects('companies', $missingCompanyIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing accounts', [
'size' => count($missingCompanyIds),
'error' => $e->getMessage(),
]);
$syncedAccountsData = [];
}
return $existingAccountsData + $syncedAccountsData;
}
/**
* Prepare associated contacts - find existing and sync missing ones
* Returns mapping of CRM ID to DB ID
*/
private function prepareAssociatedContacts(array $contactIds): array
{
// Find which contacts already exist (lean covering-index lookup)
$existingContactsData = $this->crmEntityRepository
->getExistingContactIdsMap($this->config, $contactIds);
$missingContactIds = array_diff($contactIds, array_keys($existingContactsData));
if (empty($missingContactIds)) {
return $existingContactsData;
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch syncing missing contacts', [
'teamId' => $this->team->getUuid(),
'total_contacts' => count($contactIds),
'existing_contacts' => count($existingContactsData),
'missing_contacts' => count($missingContactIds),
]);
// Sync missing contacts using batch API
try {
$syncedContactsData = $this->batchSyncCrmObjects('contacts', $missingContactIds);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to sync missing contacts', [
'size' => count($missingContactIds),
'error' => $e->getMessage(),
]);
$syncedContactsData = [];
}
return $existingContactsData + $syncedContactsData;
}
private function batchSyncCrmObjects(string $objectType, array $crmIds): array
{
$syncObjects = [];
$crmObjectIds = array_values($crmIds);
foreach (array_chunk($crmObjectIds, self::BATCH_SIZE) as $chunk) {
try {
$objects = $objectType === 'companies' ?
$this->client->getCompaniesByIds($chunk, $this->getCompanyFields()) :
$this->client->getContactsByIds($chunk, $this->getContactFields());
foreach ($objects as $objectId => $objectData) {
$this->importCrmObject($objectType, (string) $objectId, $objectData, $syncObjects);
}
$this->logger->info('[' . $this->getDisplayName() . '] Batch synced ' . $objectType, [
'requested_count' => count($chunk),
'synced_count' => count($objects),
]);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Batch ' . $objectType . ' sync failed', [
'ids' => $chunk,
'error' => $e->getMessage(),
]);
}
}
return $syncObjects;
}
private function importCrmObject(string $objectType, string $objectId, mixed $objectData, array &$syncObjects): void
{
try {
$object = $objectType === 'companies' ?
$this->importAccount($objectData) :
$this->importContact($objectData);
if ($object) {
$syncObjects[$object->getCrmProviderId()] = $object->getId();
}
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to import batch ' . $objectType, [
'id' => $objectId,
'error' => $e->getMessage(),
]);
}
}
/**
* Prepare associations for a single opportunity
*
* The return value is an array with the following structure:
* [
* 'companies' => [
* $companyCrmId => $companyId,
* ...
* ],
* 'contacts' => [
* $contactCrmId => $contactId,
* ...
* ],
* 'account_id' => $accountId,
* ]
*/
private function prepareAssociationsForOpportunity(
string $oppCrmId,
array $companyAssociations,
array $contactAssociations,
array $associationsData
): array {
$associations = [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
$oppCompanyIds = $companyAssociations[$oppCrmId] ?? [];
foreach ($oppCompanyIds as $companyCrmId) {
if (isset($associationsData['company_id_mappings'][$companyCrmId])) {
$associations['companies'][$companyCrmId] = $associationsData['company_id_mappings'][$companyCrmId];
// Set primary account (first company becomes primary account)
if ($associations['account_id'] === null) {
$associations['account_id'] = $associationsData['company_id_mappings'][$companyCrmId];
}
}
}
$oppContactIds = $contactAssociations[$oppCrmId] ?? [];
foreach ($oppContactIds as $contactCrmId) {
if (isset($associationsData['contact_id_mappings'][$contactCrmId])) {
$associations['contacts'][$contactCrmId] = $associationsData['contact_id_mappings'][$contactCrmId];
}
}
return $associations;
}
/**
* Update only associations for an opportunity
*/
private function updateOpportunityAssociations(Opportunity $opportunity, array $associations): void
{
// Update contact associations
$this->importOpportunityContacts($opportunity, $associations['contacts']);
// Update company (account) associations
$this->updateOpportunityAccount($opportunity, $associations['account_id']);
}
/**
* Remove all contact associations from an opportunity
*/
private function removeAllOpportunityContacts(Opportunity $opportunity): void
{
$currentCount = (int) $opportunity->contacts()->count();
if ($currentCount > 0) {
$opportunity->contacts()->detach();
$this->logger->info('[' . $this->getDisplayName() . '] Removed all contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_count' => $currentCount,
]);
}
}
private function updateOpportunityAccount(Opportunity $opportunity, ?int $accountId): void
{
if ($accountId === null) {
// No account ID provided - keep current account
return;
}
$currentAccountId = $opportunity->getAccountId();
// Only update if account has changed
if ($currentAccountId !== $accountId) {
$opportunity->account_id = $accountId;
$opportunity->save();
$this->logger->info('[' . $this->getDisplayName() . '] Updated opportunity account association', [
'opportunity_id' => $opportunity->getId(),
'old_account_id' => $currentAccountId,
'new_account_id' => $accountId,
]);
}
}
/**
* Find existing opportunities by external IDs (OPTIMIZED VERSION)
* Uses batch query for better performance
*/
private function findExistingOpportunities(array $crmIds): Collection
{
return $this->crmEntityRepository
->findOpportunitiesByExternalIds($this->config, $crmIds);
}
private function processOpportunityBatch(array $opportunities): int
{
$syncedOpportunities = $this->importOpportunityBatch($opportunities);
return count($syncedOpportunities['success'] ?? []);
}
/**
* Convert single deal associations from HubSpot format to internal format
* Handles both HubSpot SDK objects and array formats
*
* @param array $opportunityAssociations Raw associations from HubSpot API or pre-processed
*
* @return array Processed associations with DB IDs
*/
private function convertDealAssociations(array $opportunityAssociations): array
{
$associations = $this->initializeAssociationsStructure();
if (empty($opportunityAssociations)) {
return $associations;
}
$associationIds = $this->extractAssociationIds($opportunityAssociations);
$this->processCompanyAssociations($associationIds, $associations);
$this->processContactAssociations($associationIds, $associations);
return $associations;
}
private function initializeAssociationsStructure(): array
{
return [
'companies' => [],
'contacts' => [],
'account_id' => null, // Primary account for opportunity
];
}
private function extractAssociationIds(array $opportunityAssociations): array
{
$associationIds = [];
foreach ($opportunityAssociations as $type => $associationData) {
if (! empty($associationData)) {
$associationIds[$type] = $this->convertSingleDealAssociations($associationData);
}
}
return $associationIds;
}
private function processCompanyAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['companies'])) {
return;
}
$companyId = $associationIds['companies'][0];
$account = $this->findOrSyncAccount($companyId);
if ($account instanceof Account) {
$associations['companies'][$companyId] = $account->getId();
$associations['account_id'] = $account->getId();
}
}
private function processContactAssociations(array $associationIds, array &$associations): void
{
if (empty($associationIds['contacts'])) {
return;
}
foreach ($associationIds['contacts'] as $contactId) {
$contact = $this->findOrSyncContact($contactId);
if ($contact instanceof Contact) {
$associations['contacts'][$contactId] = $contact->getId();
}
}
}
private function findOrSyncAccount(string $companyId): ?Account
{
$account = $this->crmEntityRepository->findAccountByExternalId($this->config, $companyId);
if (! $account instanceof Account) {
$account = $this->syncAccount($companyId);
}
return $account;
}
private function findOrSyncContact(string $contactId): ?Contact
{
$contact = $this->crmEntityRepository->findContactByExternalId($this->config, $contactId);
if (! $contact instanceof Contact) {
$contact = $this->syncContact($contactId);
}
return $contact;
}
private function convertSingleDealAssociations($opportunityAssociations = null): array
{
$associationData = [];
if ($opportunityAssociations === null) {
return $associationData;
}
// Handle array input (from extractAssociationIds)
if (is_array($opportunityAssociations)) {
return $opportunityAssociations;
}
// Handle CollectionResponseAssociatedId object
if ($opportunityAssociations instanceof CollectionResponseAssociatedId) {
foreach ($opportunityAssociations->getResults() as $association) {
$associationData[] = $association->getId();
}
}
return $associationData;
}
private function importOrUpdateOpportunity($crmData, ?bool $exists = null): ?Opportunity
{
if (empty($crmData['properties'])) {
return null;
}
$crmId = (string) $crmData['id'];
$properties = $crmData['properties'];
$associations = $crmData['associations'] ?? [];
$opportunityExists = $exists ?? (bool) $this->crmEntityRepository->findOpportunityByExternalId(
$this->config,
$crmId
);
if ($opportunityExists) {
return $this->updateOpportunity($crmId, $properties, $associations);
}
return $this->createOpportunity($crmId, $properties, $associations);
}
/**
* Create new opportunity
*/
private function createOpportunity(string $crmId, array $properties, array $associations): ?Opportunity
{
$accountId = $this->resolveAccountId($associations);
if (! $accountId) {
return null;
}
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
if (! $businessProcess) {
return null;
}
$stage = $this->resolveStage($businessProcess, $properties['dealstage'] ?? null);
if (! $stage) {
return null;
}
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->importOpportunityContacts($opportunity, $associations['contacts']);
if ($opportunity->wasRecentlyCreated) {
MatchActivitiesToNewOpportunity::dispatch($opportunity->getId());
}
return $opportunity;
}
/**
* Update existing opportunity
*/
private function updateOpportunity(string $crmId, array $properties, array $associations): Opportunity
{
$accountId = $this->resolveAccountId($associations);
$businessProcess = $this->resolveBusinessProcess($properties['pipeline'] ?? null);
$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties['dealstage'] ?? null) : null;
$data = $this->buildOpportunityData($properties, $accountId, $businessProcess, $stage);
$attributes = [
'crm_configuration_id' => $this->config->getId(),
'crm_provider_id' => $crmId,
];
$values = array_merge($attributes, $data);
$opportunity = $this->crmEntityRepository->upsertOpportunity($attributes, $values);
$this->importExternalFieldData($properties, $opportunity->getId());
$this->updateOpportunityAssociations($opportunity, $associations);
return $opportunity;
}
private function resolveAccountId(array $associations): ?int
{
if (! empty($associations['account_id'])) {
return $associations['account_id'];
}
if (empty($associations)) {
return null;
}
// Fallback: use first company as account (currently SDK returns one company)
foreach ($associations['companies'] as $accountId) {
return $accountId;
}
return null;
}
private function buildOpportunityData(
array $properties,
?int $accountId,
?BusinessProcess $businessProcess,
?Stage $stage
): array {
$ownerId = null;
$profile = null;
if (! empty($properties['hubspot_owner_id'])) {
$ownerId = $properties['hubspot_owner_id'];
$profile = $this->getCachedOwnerProfile((string) $ownerId);
}
$name = 'Unknown';
if (isset($properties['dealname'])) {
$name = mb_strimwidth($properties['dealname'], 0, 128);
}
$amount = $this->resolveAmount($properties);
$currency = $properties['deal_currency_code'] ?? null;
$closeDate = null;
if (! empty($properties['closedate'])) {
$closeDate = Carbon::parse($properties['closedate'])->format('Y-m-d');
}
$remotelyCreatedAt = null;
if (! empty($properties['createdate']) && strtotime($properties['createdate'])) {
$date = $this->parseCleanDatetime($properties['createdate']);
$remotelyCreatedAt = $date?->format('Y-m-d H:i:s');
}
$closedStages = $this->getClosedDealStages();
$isWon = in_array($properties['dealstage'], $closedStages['won']);
$isLost = in_array($properties['dealstage'], $closedStages['lost']);
$data = [
'team_id' => $this->team->getId(),
'user_id' => $profile ? $profile->user_id : null,
'owner_id' => $ownerId,
'name' => $name,
'value' => ! empty($amount) ? $amount : null,
'currency_code' => CurrencyFormatter::formatCode($currency),
'close_date' => $closeDate,
'is_closed' => $isWon || $isLost,
'is_won' => $isWon,
'remotely_created_at' => $remotelyCreatedAt,
'probability' => $this->resolveDealProbability($properties['hs_deal_stage_probability']),
'forecast_category' => $this->resolveForecastCategory($properties['hs_manual_forecast_category']),
];
if ($accountId) {
$data['account_id'] = $accountId;
}
if ($stage) {
$data['stage_id'] = $stage->id;
}
if ($businessProcess) {
$recordType = $this->getCachedBusinessProcessRecordType($businessProcess);
if ($recordType) {
$data['record_type_id'] = $recordType->id;
}
}
return $data;
}
private function getCachedOwnerProfile(string $ownerId): mixed
{
$cacheKey = $this->config->getId() . ':' . $ownerId;
if (array_key_exists($cacheKey, $this->cachedOwnerProfiles)) {
return $this->cachedOwnerProfiles[$cacheKey];
}
$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, $ownerId);
$this->cachedOwnerProfiles[$cacheKey] = $profile;
return $profile;
}
private function getCachedBusinessProcessRecordType(BusinessProcess $businessProcess): mixed
{
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId();
if (array_key_exists($cacheKey, $this->cachedRecordTypes)) {
return $this->cachedRecordTypes[$cacheKey];
}
$recordType = $this->crmEntityRepository->getBusinessProcessRecordType($businessProcess);
$this->cachedRecordTypes[$cacheKey] = $recordType;
return $recordType;
}
private function resolveBusinessProcess(?string $pipelineId): ?BusinessProcess
{
if ($pipelineId === null) {
return null;
}
$cacheKey = $this->getBusinessProcessCacheKey($pipelineId);
if (isset($this->cachedBusinessProcesses[$cacheKey])) {
return $this->cachedBusinessProcesses[$cacheKey];
}
$businessProcess = $this->getBusinessProcess($pipelineId);
if (! $businessProcess instanceof BusinessProcess) {
$this->importStages();
$businessProcess = $this->getBusinessProcess($pipelineId);
}
if (! $businessProcess instanceof BusinessProcess) {
$this->logger->info(
'[HubSpot] Deal is not attached to a pipeline',
[
'pipeline' => $pipelineId]
);
}
$this->cachedBusinessProcesses[$cacheKey] = $businessProcess;
return $businessProcess;
}
private function getBusinessProcess(string $pipelineId): ?BusinessProcess
{
return $this->crmEntityRepository->findBusinessProcessesByExternalId($this->config, $pipelineId);
}
private function getBusinessProcessCacheKey(string $pipelineId): string
{
return $this->config->getId() . '_' . $pipelineId;
}
private function resolveStage(BusinessProcess $businessProcess, ?string $stageId): ?Stage
{
if (empty($stageId)) {
return null;
}
$cacheKey = $this->config->getId() . ':' . $businessProcess->getId() . ':' . $stageId;
if (isset($this->cachedStages[$cacheKey])) {
return $this->cachedStages[$cacheKey];
}
$stage = $this->crmEntityRepository->getPipelineStageByConditions(
$businessProcess,
[
'crm_provider_id' => $stageId,
'type' => Stage::TYPE_OPPORTUNITY,
]
);
if ($stage === null) {
$this->importStages(null, $stageId);
}
if ($stage === null) {
$this->logger->info('[HubSpot] Stage does not exist => ' . $stageId);
}
$this->cachedStages[$cacheKey] = $stage;
return $stage;
}
private function resolveAmount(array $properties): ?string
{
$amount = null;
if (! empty($properties['amount'])) {
$amount = str_replace(',', '', $properties['amount']);
}
if ($this->config->hasDefaultCurrencyFieldSet()) {
$valueFieldName = $this->config->getDefaultCurrencyField()->getCrmProviderId();
$amount = $properties[$valueFieldName] ?? $amount;
}
return $amount;
}
private function parseCleanDatetime(string $datetime): ?Carbon
{
// Treat pre-1980 values as invalid
$minValidDate = Carbon::parse('1980-01-01 00:00:00');
try {
$date = Carbon::parse($datetime);
if ($minValidDate->gt($date)) {
return null;
}
return $date;
} catch (Exception) {
return null; // On parse error, treat as null
}
}
private function resolveDealProbability(?string $stageProbability): int
{
if ($stageProbability === null) {
return 0;
}
$probability = (float) $stageProbability;
return $probability > 1 ? 0 : (int) ($probability * 100);
}
private function resolveForecastCategory(?string $forecastCategory): string
{
if (! $forecastCategory) {
return Forecast::FORECAST_CATEGORY_UNCATEGORIZED;
}
$forecastCategory = str_replace('_', ' ', $forecastCategory);
return ucwords(strtolower($forecastCategory));
}
private function importExternalFieldData(array $properties, int $opportunityId): void
{
$this->importOpportunityCrmFieldData(
$properties,
$this->getCachedOpportunitySyncableFields(),
$opportunityId
);
}
private function getCachedOpportunitySyncableFields(): array
{
$cacheKey = (string) $this->config->getId();
if (! isset($this->cachedOpportunitySyncableFields[$cacheKey])) {
$this->cachedOpportunitySyncableFields[$cacheKey] = $this->getOpportunitySyncableFields();
}
return $this->cachedOpportunitySyncableFields[$cacheKey];
}
private function importOpportunityContacts(Opportunity $opportunity, array $associations): void
{
// Handle empty or missing contact associations
if (empty($associations)) {
// Remove all existing contact associations if none provided
$this->removeAllOpportunityContacts($opportunity);
return;
}
// Use differential sync approach for better performance and accuracy
$this->syncOpportunityContactsDifferential($opportunity, $associations);
}
/**
* Sync opportunity contacts using differential approach
* This compares current vs new associations and only makes necessary changes
*/
private function syncOpportunityContactsDifferential(Opportunity $opportunity, array $contactAssociations): void
{
$currentContactCrmIds = $this->getCurrentContactCrmIds($opportunity);
$contactAssociationIds = array_keys($contactAssociations);
$contactsToAdd = array_diff($contactAssociationIds, $currentContactCrmIds);
$contactsToRemove = array_diff($currentContactCrmIds, $contactAssociationIds);
if (empty($contactsToAdd) && empty($contactsToRemove)) {
return;
}
$this->logContactAssociationChanges($opportunity, $currentContactCrmIds, $contactAssociations, $contactsToAdd, $contactsToRemove);
$this->removeContactAssociations($opportunity, $contactsToRemove);
$this->addContactAssociations($opportunity, $contactsToAdd, $contactAssociations);
}
private function getCurrentContactCrmIds(Opportunity $opportunity): array
{
return $opportunity->contacts()
->pluck('contacts.crm_provider_id')
->toArray();
}
private function logContactAssociationChanges(
Opportunity $opportunity,
array $currentContactCrmIds,
array $contactAssociations,
array $contactsToAdd,
array $contactsToRemove
): void {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association changes', [
'opportunity_id' => $opportunity->getId(),
'current_contacts' => $currentContactCrmIds,
'new_contacts' => $contactAssociations,
'contacts_to_add' => $contactsToAdd,
'contacts_to_remove' => $contactsToRemove,
]);
}
private function removeContactAssociations(Opportunity $opportunity, array $contactsToRemove): void
{
if (empty($contactsToRemove)) {
return;
}
$contactsToDetach = $opportunity->contacts()
->whereIn('contacts.crm_provider_id', $contactsToRemove)
->pluck('contacts.id')
->toArray();
if (! empty($contactsToDetach)) {
$opportunity->contacts()->detach($contactsToDetach);
$this->logger->info('[' . $this->getDisplayName() . '] Removed contact associations', [
'opportunity_id' => $opportunity->getId(),
'removed_contact_crm_ids' => $contactsToRemove,
'removed_contact_count' => count($contactsToDetach),
]);
}
}
private function addContactAssociations(Opportunity $opportunity, array $contactsToAdd, array $contactAssociations): void
{
if (empty($contactsToAdd)) {
return;
}
$contactsAdded = [];
foreach ($contactsToAdd as $crmId) {
$id = $contactAssociations[$crmId];
if ($this->attachSingleContact($opportunity, (string) $crmId, $id)) {
$contactsAdded[] = $crmId;
}
}
$this->logAddedContacts($opportunity, $contactsAdded);
}
private function attachSingleContact(Opportunity $opportunity, string $crmId, int $id): bool
{
try {
return $this->performContactAttachment($opportunity, $id, $crmId);
} catch (\Throwable $e) {
$this->logger->warning('[' . $this->getDisplayName() . '] Failed to add contact association', [
'opportunity_id' => $opportunity->getId(),
'contact_crm_id' => $crmId,
'error' => $e->getMessage(),
]);
return false;
}
}
private function performContactAttachment(Opportunity $opportunity, int $contactId, string $crmId): bool
{
try {
$opportunity->contacts()->attach($contactId, [
'crm_provider_id' => $crmId,
]);
return true;
} catch (\Illuminate\Database\QueryException $e) {
if (str_contains($e->getMessage(), 'Duplicate entry')) {
$this->logger->info('[' . $this->getDisplayName() . '] Contact association already exists', [
'contact_id' => $contactId,
'contact_crm_id' => $crmId,
'opportunity_id' => $opportunity->getId(),
]);
return false;
}
throw $e;
}
}
private function logAddedContacts(Opportunity $opportunity, array $contactsAdded): void
{
if (! empty($contactsAdded)) {
$this->logger->info('[' . $this->getDisplayName() . '] Added contact associations', [
'opportunity_id' => $opportunity->getId(),
'added_contact_crm_ids' => $contactsAdded,
'added_contacts_count' => count($contactsAdded),
]);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3089
|
121
|
1
|
2026-05-07T11:59:56.399545+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155196399_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring start {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring end {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
69
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring start {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring end {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}","depth":4,"on_screen":true,"value":"[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring start {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring end {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"69","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6289926293678881367
|
6378759383152203876
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring start {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring end {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
69
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3090
|
122
|
1
|
2026-05-07T11:59:56.497379+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155196497_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring start {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring end {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
69
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring start {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring end {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}","depth":4,"bounds":{"left":0.52859044,"top":0.0726257,"width":0.47140956,"height":0.9066241},"on_screen":true,"lines":[{"char_start":1774,"char_count":160,"bounds":{"left":0.53025264,"top":0.0,"width":0.41223404,"height":0.014365523}},{"char_start":1934,"char_count":326,"bounds":{"left":0.53025264,"top":0.0,"width":0.46974736,"height":0.014365523}},{"char_start":2260,"char_count":380,"bounds":{"left":0.53025264,"top":0.0,"width":0.46974736,"height":0.014365523}},{"char_start":2640,"char_count":321,"bounds":{"left":0.53025264,"top":0.0,"width":0.46974736,"height":0.014365523}},{"char_start":2961,"char_count":206,"bounds":{"left":0.53025264,"top":0.0,"width":0.46974736,"height":0.014365523}},{"char_start":3167,"char_count":220,"bounds":{"left":0.53025264,"top":0.0015961692,"width":0.46974736,"height":0.014365523}},{"char_start":3387,"char_count":373,"bounds":{"left":0.53025264,"top":0.01915403,"width":0.46974736,"height":0.014365523}}],"value":"[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3cb37764-b6ec-4d4c-85b3-298d24411fec\",\"trace_id\":\"1387c33f-5f58-4299-a3da-9c3ad7e240fe\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"997b55b4-ed52-4426-95b2-3d79f48278ae\",\"trace_id\":\"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring start {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:13] local.NOTICE: Monitoring end {\"correlation_id\":\"1f069a13-4342-40ed-bf79-1472c9c60637\",\"trace_id\":\"1c2564a5-1d98-4061-819a-060f3143e672\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92fadd4f-de00-4eae-8e71-26517f0e405c\",\"trace_id\":\"034b1cf6-05b1-455d-9d58-e7286ec06e25\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}\n[2026-05-07 11:59:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc\",\"trace_id\":\"a7cdd06b-a602-49f9-a0f7-24736d4d641a\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.47273937,"top":0.17478053,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4820479,"top":0.17478053,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"69","depth":4,"bounds":{"left":0.49202126,"top":0.17478053,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.5043218,"top":0.17478053,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.17318435,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.17318435,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6289926293678881367
|
6378759383152203876
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec","trace_id":"1387c33f-5f58-4299-a3da-9c3ad7e240fe"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"997b55b4-ed52-4426-95b2-3d79f48278ae","trace_id":"9a0814b7-e0ae-4f6d-ad98-2979c51e16cb"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring start {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:13] local.NOTICE: Monitoring end {"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637","trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"92fadd4f-de00-4eae-8e71-26517f0e405c","trace_id":"034b1cf6-05b1-455d-9d58-e7286ec06e25"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
[2026-05-07 11:59:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc","trace_id":"a7cdd06b-a602-49f9-a0f7-24736d4d641a"}
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
69
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3171
|
124
|
1
|
2026-05-07T12:05:08.156785+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155508156_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
* PostmanEditVIewWindowmelpHubSpot rate limit impl * PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429. set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details → portalinto +GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."correlationia": "...","requestId": "..."nolncvname values:• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search querv. may 3.000 chars may 18 flters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlahel"supoont Dally • now100% L2Thu 7 May 15:05:08Xx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.v COLLECtIONs> Associations V4•CMs - URL Redirecis APl collection> Comoanies• COMPADE› ContactsCRM ObIects• crm/v3/objects/(object Type)> 0 batchv obiect Id!.> [ associations/{to Object Type)GET Read9.9: An error occurred.eg. successful overation>DEL Archive> PATCH Update>GET LISt> POST Create>post Filter, sort, and search CRM Objects> CRM Owners> CRM Pipelines> DealsEngagements> OLD ENGAGEMENTSGET list meetingsPOST search modified companiesPOsT search tasksGET read call>post conrch cnlleGer list callspost meetinas scheculedGET det meetingpost get link to task> post Create Contact with Association> Hubspotpost Cot tokonGEt det subscrintionsPOST create subscriptionCAMIDONMCNTC) spFcs>FLOWS• Connect Git = Concold5.) TermiPOST Read a batchGET ReadGET read call •GET Get EngagemeNo environmentCRM Obiects > crm/v3/obiects/{obiect Tvoe) > (obiect Id) > ReadlE Save~{(baseUrl)) /crm/v3/objects/ctJ1/480171536586?properties=boby.internalMeetingNotes&associations=contacts,deals,companies= DocsParams • Authorization • Headers 9 Body Scripts SettingsAuth TypeTokenRearer TokenCookies((token})The authorization header will be automatically generated whenHeaders 21 lest Results:statusdatecontent-typecf-rayct-cache-statuscache-controlstrict-transnort-securitvaccess-control-allow-credentialsserver-timinalx-hubspot-correlation-idy-hubenot-notfoundlwwnhonrrashlmmawx-hubspot-ratelimit-remainingx-hubspot-ratelimit-secondlv-remainingrenort-toAOA Not Found • 162 ms • 1.2 KB • CтAe.g. save kesponse ..•AO4IThu. 07 May 2026 11:25:25 GMuwowt/htmlaharcatzicn.0060./Of7fdd2bea988428-SoFDYNAMICmunc crevalaate naeeache noectoremax-age=31536000; includeSubDomains; preloadorigin. Accept-Encodingfalcehcid:desc="019e022f-77c3-7883-a217-66912667639f" cfr.desc="9f7fdd2c02ef3402-IAD"019e022f-77c3-7883-a217-bb912b67b39ftrue10000f"ondnoints".[("url"."httnc-|Ma.nel.cloudflare com\/renort|/v42c-0020FQhENR8Hit@cRe2VRceAKmcQamurVFTlQvlKTttAKi""success fraction":0.01."report_to"."cf-nel""max age":604800Vault Tools?0 00...
|
NULL
|
8196261695282003609
|
NULL
|
click
|
ocr
|
NULL
|
* PostmanEditVIewWindowmelpHubSpot rate limit impl * PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429. set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details → portalinto +GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."correlationia": "...","requestId": "..."nolncvname values:• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search querv. may 3.000 chars may 18 flters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlahel"supoont Dally • now100% L2Thu 7 May 15:05:08Xx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.v COLLECtIONs> Associations V4•CMs - URL Redirecis APl collection> Comoanies• COMPADE› ContactsCRM ObIects• crm/v3/objects/(object Type)> 0 batchv obiect Id!.> [ associations/{to Object Type)GET Read9.9: An error occurred.eg. successful overation>DEL Archive> PATCH Update>GET LISt> POST Create>post Filter, sort, and search CRM Objects> CRM Owners> CRM Pipelines> DealsEngagements> OLD ENGAGEMENTSGET list meetingsPOST search modified companiesPOsT search tasksGET read call>post conrch cnlleGer list callspost meetinas scheculedGET det meetingpost get link to task> post Create Contact with Association> Hubspotpost Cot tokonGEt det subscrintionsPOST create subscriptionCAMIDONMCNTC) spFcs>FLOWS• Connect Git = Concold5.) TermiPOST Read a batchGET ReadGET read call •GET Get EngagemeNo environmentCRM Obiects > crm/v3/obiects/{obiect Tvoe) > (obiect Id) > ReadlE Save~{(baseUrl)) /crm/v3/objects/ctJ1/480171536586?properties=boby.internalMeetingNotes&associations=contacts,deals,companies= DocsParams • Authorization • Headers 9 Body Scripts SettingsAuth TypeTokenRearer TokenCookies((token})The authorization header will be automatically generated whenHeaders 21 lest Results:statusdatecontent-typecf-rayct-cache-statuscache-controlstrict-transnort-securitvaccess-control-allow-credentialsserver-timinalx-hubspot-correlation-idy-hubenot-notfoundlwwnhonrrashlmmawx-hubspot-ratelimit-remainingx-hubspot-ratelimit-secondlv-remainingrenort-toAOA Not Found • 162 ms • 1.2 KB • CтAe.g. save kesponse ..•AO4IThu. 07 May 2026 11:25:25 GMuwowt/htmlaharcatzicn.0060./Of7fdd2bea988428-SoFDYNAMICmunc crevalaate naeeache noectoremax-age=31536000; includeSubDomains; preloadorigin. Accept-Encodingfalcehcid:desc="019e022f-77c3-7883-a217-66912667639f" cfr.desc="9f7fdd2c02ef3402-IAD"019e022f-77c3-7883-a217-bb912b67b39ftrue10000f"ondnoints".[("url"."httnc-|Ma.nel.cloudflare com\/renort|/v42c-0020FQhENR8Hit@cRe2VRceAKmcQamurVFTlQvlKTttAKi""success fraction":0.01."report_to"."cf-nel""max age":604800Vault Tools?0 00...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3172
|
123
|
1
|
2026-05-07T12:05:08.156797+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155508156_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• •DOCKERDEV (docker)H82APP (-zsh)viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]$0lohlSupport Daily • now100% <478DEV (docker)-zsh• $4screenpipe"•$55.95ms DONE-zshThu 7 May 15:05:08T₴1₴6DEV...
|
NULL
|
-4492504284378779201
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• •DOCKERDEV (docker)H82APP (-zsh)viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]$0lohlSupport Daily • now100% <478DEV (docker)-zsh• $4screenpipe"•$55.95ms DONE-zshThu 7 May 15:05:08T₴1₴6DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3290
|
125
|
1
|
2026-05-07T12:10:10.587818+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155810587_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanFileEditViewWindowHelpIalnSupport Daily - 5 PostmanFileEditViewWindowHelpIalnSupport Daily - 5 m left100% [8DEV (docker)DOCKER₴1DEV (docker)H82APP (-zsh)-zsh• $4screenpipe"•$55.95ms DONE-zshThu 7 May 15:10:10T₴1₴6viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedJiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]DEV...
|
NULL
|
4989990709130051184
|
NULL
|
click
|
ocr
|
NULL
|
PostmanFileEditViewWindowHelpIalnSupport Daily - 5 PostmanFileEditViewWindowHelpIalnSupport Daily - 5 m left100% [8DEV (docker)DOCKER₴1DEV (docker)H82APP (-zsh)-zsh• $4screenpipe"•$55.95ms DONE-zshThu 7 May 15:10:10T₴1₴6viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedJiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3291
|
126
|
1
|
2026-05-07T12:10:10.710509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155810710_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save)2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privmeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search query. may 3.000 chars. may 18 Alters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaXx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationGET next •GET readm lterationRun orderPerformanceRun SequenceDeselect All Select AllChoose how to run your collectionGET Read copy• Run manually• Schedule runs ©• Automate runs via CLI ©Run configurationterations ©Delay ©)Test data file GAdvanced SettinasPersist responses for a session Oturn oft loas durind runv Stop run if an error occursKeep variable values ©)0 Pun collection without udina storod cookiosSave cookies after collection run"suppont Dally • om lertNo environment v|x=v COLLECtIONs> batchv O (object Id)associations to Obiect Tivoe?y det Reade9. An error occurred.29: successtul operation>DEL Archive>PATCH Update>GET List>post Create> PosT Filter. Sort. and Search CRM ObiectsCRM Owners> CRM Pioelines>Dealsv Engagements> C OLD ENGAGEMENTSGET list meetinaspost coarch modifiod comnaniocPOST search tasksest road call> POST search callscsT list callsPOST meetinas scheduledGET get meetingPOST aet link to task> post Cronto Contart with AccorintionHubspotv Iteration run HSGET Read Coov40. An error occurred.en. successtul oberation› Journal & webhoooks v4> ©Authi› Properties>RESSARCH> SEARCH> Ticketsvtleofint> PosT filter per comoany / oniv open deal stagesGET engagements old associated by deaCAMIDONMCNTG> SPFCSELOWSa Connect Git = Concoleo.) Termin100% L2Thu 7 May 15:10:10UparadeVAlIAll variablesE environmentNo environment selected. Select envionmenG Globalstokenckpurspqmxizging.baseUrlhttps://apl.hubapi.comdev-tokencLLm5nn@mxir@in.• Local VaultStore your API secrets locally in vault.Dwe VauiGiobals Vault Took -- m=m...
|
NULL
|
-3318299645232667056
|
NULL
|
click
|
ocr
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save)2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privmeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search query. may 3.000 chars. may 18 Alters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaXx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationGET next •GET readm lterationRun orderPerformanceRun SequenceDeselect All Select AllChoose how to run your collectionGET Read copy• Run manually• Schedule runs ©• Automate runs via CLI ©Run configurationterations ©Delay ©)Test data file GAdvanced SettinasPersist responses for a session Oturn oft loas durind runv Stop run if an error occursKeep variable values ©)0 Pun collection without udina storod cookiosSave cookies after collection run"suppont Dally • om lertNo environment v|x=v COLLECtIONs> batchv O (object Id)associations to Obiect Tivoe?y det Reade9. An error occurred.29: successtul operation>DEL Archive>PATCH Update>GET List>post Create> PosT Filter. Sort. and Search CRM ObiectsCRM Owners> CRM Pioelines>Dealsv Engagements> C OLD ENGAGEMENTSGET list meetinaspost coarch modifiod comnaniocPOST search tasksest road call> POST search callscsT list callsPOST meetinas scheduledGET get meetingPOST aet link to task> post Cronto Contart with AccorintionHubspotv Iteration run HSGET Read Coov40. An error occurred.en. successtul oberation› Journal & webhoooks v4> ©Authi› Properties>RESSARCH> SEARCH> Ticketsvtleofint> PosT filter per comoany / oniv open deal stagesGET engagements old associated by deaCAMIDONMCNTG> SPFCSELOWSa Connect Git = Concoleo.) Termin100% L2Thu 7 May 15:10:10UparadeVAlIAll variablesE environmentNo environment selected. Select envionmenG Globalstokenckpurspqmxizging.baseUrlhttps://apl.hubapi.comdev-tokencLLm5nn@mxir@in.• Local VaultStore your API secrets locally in vault.Dwe VauiGiobals Vault Took -- m=m...
|
3289
|
NULL
|
NULL
|
NULL
|
|
3383
|
127
|
1
|
2026-05-07T12:15:20.642983+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156120642_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Lukas/Stefka 121 - in 2h 15 m100% <478DEV (docker)DOCKERO &1DEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:15:20T81₴6DEV...
|
NULL
|
5933985341608259552
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Lukas/Stefka 121 - in 2h 15 m100% <478DEV (docker)DOCKERO &1DEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:15:20T81₴6DEV...
|
3381
|
NULL
|
NULL
|
NULL
|
|
3385
|
128
|
1
|
2026-05-07T12:15:22.606098+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156122606_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."correlationia": "...","requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes•Search querv. may 3.000 chars may 18 flters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONSeg. successful operationg9: An error occurred.> CRM Owners> CRM Pipelines> DealsengagementsOLD ENGAGEMENTSder list meetingspost soarch tackeGET read calll> POST search callsGeT ist callsPOST meetings scheduledGET get meetingPOST get link to task> POST Create Contact with AssociationHubsnotIteration run HSV GET Read Copyc.g. An error occurred.ca. succecsful onerationPOST search contact by email CopyIournal & wehhoookc vA> ©Auth› Properties> RESEARCHSFAPCHPOST search contact by phonePOST search contact by emaiPOST search meetinaspost cearch notec> POST Search calls v3POST Search related meetings v3POST search deals> Ticketcv UsefullGET Get!m IterationD IteratioPOST searcIteration run HS › search contact by email Copyhttps://api.hubapi.com/crm/v3/objects/contacts/search= DocsBagy • Scripts SettingsAuth TypeRearer Token«{token))ine autnorization neader will oe automaticallygenerated when you send the reauest. Learnmore about Bearer Token authorization.PesnanceHistory> POST filter per company / only open deal stagesGET endagements old associated ov deaGET engagements old associated by companyCAMIDONMCNTC> SPFCSELOWSConnect Git E Console 2 TermirSend + Get a successful responsea Send + Visualize response*R Send + Write tests" Lukas sterka 121 • In zh 1omNo environmentv) Savecookies100% L2VAIlVariables in requestG token› All variablesInu / May 10.10.22UparadeCKPur5PaMx ZoiNg,Globals Vault Tools? 0 0 0...
|
NULL
|
-3613763934861524455
|
NULL
|
click
|
ocr
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."correlationia": "...","requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes•Search querv. may 3.000 chars may 18 flters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONSeg. successful operationg9: An error occurred.> CRM Owners> CRM Pipelines> DealsengagementsOLD ENGAGEMENTSder list meetingspost soarch tackeGET read calll> POST search callsGeT ist callsPOST meetings scheduledGET get meetingPOST get link to task> POST Create Contact with AssociationHubsnotIteration run HSV GET Read Copyc.g. An error occurred.ca. succecsful onerationPOST search contact by email CopyIournal & wehhoookc vA> ©Auth› Properties> RESEARCHSFAPCHPOST search contact by phonePOST search contact by emaiPOST search meetinaspost cearch notec> POST Search calls v3POST Search related meetings v3POST search deals> Ticketcv UsefullGET Get!m IterationD IteratioPOST searcIteration run HS › search contact by email Copyhttps://api.hubapi.com/crm/v3/objects/contacts/search= DocsBagy • Scripts SettingsAuth TypeRearer Token«{token))ine autnorization neader will oe automaticallygenerated when you send the reauest. Learnmore about Bearer Token authorization.PesnanceHistory> POST filter per company / only open deal stagesGET endagements old associated ov deaGET engagements old associated by companyCAMIDONMCNTC> SPFCSELOWSConnect Git E Console 2 TermirSend + Get a successful responsea Send + Visualize response*R Send + Write tests" Lukas sterka 121 • In zh 1omNo environmentv) Savecookies100% L2VAIlVariables in requestG token› All variablesInu / May 10.10.22UparadeCKPur5PaMx ZoiNg,Globals Vault Tools? 0 0 0...
|
3382
|
NULL
|
NULL
|
NULL
|
|
3463
|
130
|
1
|
2026-05-07T12:20:46.419979+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156446419_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"}]...
|
-5239740579582855099
|
3462968482044140636
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs...
|
3461
|
NULL
|
NULL
|
NULL
|
|
3464
|
129
|
1
|
2026-05-07T12:20:47.490524+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156447490_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2085455664295781624
|
4183509238051331164
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy...
|
3462
|
NULL
|
NULL
|
NULL
|
|
3538
|
131
|
1
|
2026-05-07T12:25:51.339089+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156751339_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"}]...
|
-7721900449719535725
|
1733550868963089500
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3541
|
132
|
1
|
2026-05-07T12:25:52.787673+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156752787_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ClaudeVIewWindowHubSpot rate limit implementation ClaudeVIewWindowHubSpot rate limit implementation strategy vThat gets vou well past 11/sec. Each Newman process makes its calls sequentially, butmultiple Newman processes run concurrently.Option 4: Postman Pertormance Lesting (newer reature)If vour Postman version has it, Collection Runner has a Performance tab nowalonoside -unctionab.t runs the col lection with connourable virtual users inparallel — set 20 virtual users. 30-second duration, and vou'll saturate the burstwindow without any external tooling. rat is kun collection Perrormance >ConfigureYou probablv don't actually need to hit itWorth pausing here: the goal of this exercise is to verify your limiter handles 429scorecivnont youcancotar win a mock winout ouimino rea auotaIn your test, fake a 429 response$mockResponse = new GuzzleHttp Psr7 Response(429.'Retry-After' => '8',ison encode(lstatus ='error,'message' => "You have reached your secondly limit.','errorType" =>"RATFTMTTE'policyName' => 'SECONDLY',Icorrolationtat =s'test-123',That gives vou the exact shape HubSpot returns. and vou can unit-test:• Parsing policyName correctly• Routing to the right queue's backofi• Honoring Retrv-After• Not double-counting the failed call against the bucketPactmane unlttecronlly one.affaunlaration"anec thic honder aviet? what ahac,Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.from vouir terminal is the 30-second answer ir voit want to reallv see a 429. But voil'veWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDCopyvUse timeZone tointerpret resetsAt from the dally endpoint.Cheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details portalinto + read durst neaders trom responseGET /account-info/v3/api-usage/daily/private-apps → dally limits (onlymeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly limit.","errorType": "RATE LIMIT","policyName": "SECONDLY","correlationid": "...,"requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10s for OAuth, 100-250/10s forprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which bucket fired and which queue tohack offOther operational guidelines• Error responses must stay under 5% of total daily requests for marketplacecertificationi• Polling endpoints: minimum interval 5 minutes.• Search querv: max 3.000 chars. max 18 filters across 5 filter groups, max 10,000 totalrecullts ver query.• Batch endpoints: up to 100 records per call (read/create/update).• Searchwho can eait, or upgrade to restore collaborationGET Rea •xed profileesponse time ©• IterationIterationlPOST seatP90 ©187 msP95 ©210 msP99 ©305 msError % ©0.00Failure % ©0,00hhd"Lukas sterka 121• in zn omm lteration)IterationPeak CPU % ©98.8 %No environmentSharePeak Memory % ©1913 %Filter bv reauestsAva. response266 ms 140 req/s100% 2Inu / May 10.20:04UparadeVXAlAll variablesNo environment selected, seled enulommetGlobalstokenCKPur5PgMxIZQINQMI8kQE.baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vault15-24•26|15-24-4215•24•54118.400.00caihueao0,0015.25.0015-25-12- Requests/second - Ava. response - Error % - Virtualusers *• CPU% *** Memory ⅞Min (ms)Max (ms)305Giobals Vault Tooks •- =...
|
NULL
|
-4579204118881300161
|
NULL
|
click
|
ocr
|
NULL
|
ClaudeVIewWindowHubSpot rate limit implementation ClaudeVIewWindowHubSpot rate limit implementation strategy vThat gets vou well past 11/sec. Each Newman process makes its calls sequentially, butmultiple Newman processes run concurrently.Option 4: Postman Pertormance Lesting (newer reature)If vour Postman version has it, Collection Runner has a Performance tab nowalonoside -unctionab.t runs the col lection with connourable virtual users inparallel — set 20 virtual users. 30-second duration, and vou'll saturate the burstwindow without any external tooling. rat is kun collection Perrormance >ConfigureYou probablv don't actually need to hit itWorth pausing here: the goal of this exercise is to verify your limiter handles 429scorecivnont youcancotar win a mock winout ouimino rea auotaIn your test, fake a 429 response$mockResponse = new GuzzleHttp Psr7 Response(429.'Retry-After' => '8',ison encode(lstatus ='error,'message' => "You have reached your secondly limit.','errorType" =>"RATFTMTTE'policyName' => 'SECONDLY',Icorrolationtat =s'test-123',That gives vou the exact shape HubSpot returns. and vou can unit-test:• Parsing policyName correctly• Routing to the right queue's backofi• Honoring Retrv-After• Not double-counting the failed call against the bucketPactmane unlttecronlly one.affaunlaration"anec thic honder aviet? what ahac,Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.from vouir terminal is the 30-second answer ir voit want to reallv see a 429. But voil'veWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDCopyvUse timeZone tointerpret resetsAt from the dally endpoint.Cheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details portalinto + read durst neaders trom responseGET /account-info/v3/api-usage/daily/private-apps → dally limits (onlymeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly limit.","errorType": "RATE LIMIT","policyName": "SECONDLY","correlationid": "...,"requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10s for OAuth, 100-250/10s forprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which bucket fired and which queue tohack offOther operational guidelines• Error responses must stay under 5% of total daily requests for marketplacecertificationi• Polling endpoints: minimum interval 5 minutes.• Search querv: max 3.000 chars. max 18 filters across 5 filter groups, max 10,000 totalrecullts ver query.• Batch endpoints: up to 100 records per call (read/create/update).• Searchwho can eait, or upgrade to restore collaborationGET Rea •xed profileesponse time ©• IterationIterationlPOST seatP90 ©187 msP95 ©210 msP99 ©305 msError % ©0.00Failure % ©0,00hhd"Lukas sterka 121• in zn omm lteration)IterationPeak CPU % ©98.8 %No environmentSharePeak Memory % ©1913 %Filter bv reauestsAva. response266 ms 140 req/s100% 2Inu / May 10.20:04UparadeVXAlAll variablesNo environment selected, seled enulommetGlobalstokenCKPur5PgMxIZQINQMI8kQE.baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vault15-24•26|15-24-4215•24•54118.400.00caihueao0,0015.25.0015-25-12- Requests/second - Ava. response - Error % - Virtualusers *• CPU% *** Memory ⅞Min (ms)Max (ms)305Giobals Vault Tooks •- =...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3620
|
133
|
1
|
2026-05-07T12:31:12.855441+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157072855_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Tell caller how long to sleep until oldest entry expires","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZRANGE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'WITHSCORES'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'BURST'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"}]...
|
-977338772614901133
|
-6336934710217974700
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3621
|
134
|
1
|
2026-05-07T12:31:23.284200+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157083284_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end
redis
.
call
(
'ZADD'
,
KEYS
[
1
]
,
ARGV
[
1
]
,
ARGV
[
5
]
)
redis
.
call
(
'PEXPIRE'
,
KEYS
[
1
]
,
ARGV
[
2
]
+
1000
)
local
d
=
redis
.
call
(
'INCR'
,
KEYS
[
2
]
)
if
d
==
1
then
redis
.
call
(
'EXPIRE'
,
KEYS
[
2
]
,
ARGV
[
6
]
)
end
return
{
1
,
'OK'
,
tonumber
(
ARGV
[
3
]
)
-
burst_used
-
1
}
One
EVALSHA
call. Two keys touched. Returns either
{1, OK, remaining}
or
{0, reason, retry_ms}
. No race conditions because Lua is single-threaded inside Redis. No "check then increment" gap that other workers can sneak through.
The math on whether this is heavy
The math on whether this is heavy
For your 100,000 requests, with 100 PATCHes batched into 1 batch_update call per 100 deals, you're realistically making more like
1,000–2,000 actual API calls
(assuming you're using
/batch/update
and
/batch/read
properly). But let's pretend you really make all 100k.
At HubSpot's ceiling of ~240 calls/sec across both buckets, 100k calls take roughly
7 minutes
of wall time. That means:
Redis ops/sec:
~240. A laptop-grade Redis instance handles 50,000+. You're using under half a percent.
Per-request overhead:
~0.3–1.0 ms for an
EVALSHA
against local-network Redis.
Per HubSpot call:
80–400 ms typical latency.
So the limiter adds something like
0.3% to each request's wall time
. The rate limit itself is forcing you to wait 4–40 ms between calls anyway; adding 0.5 ms of bookkeeping is invisible.
This is a pattern worth internalizing:
the rate limiter cannot be the bottleneck
, because the thing it's gating (HubSpot itself) is two to three orders of magnitude slower than the gating mechanism.
Things that would make it heavy (and how to avoid them)
Things that would make it heavy (and how to avoid them)
Multiple round trips per request
— if you
GET
then
INCR
then
ZADD
separately, you've tripled the latency and broken atomicity. Use Lua. One trip.
No connection pooling
— opening a TCP connection to Redis per request is 10× more expensive than the Redis op itself. Laravel's Redis facade pools by default; just don't fight it.
Persisting accounting to MySQL...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Tell caller how long to sleep until oldest entry expires","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZRANGE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'WITHSCORES'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'BURST'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'DAILY'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZADD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'PEXPIRE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1000","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"d","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'INCR'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"d","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"==","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'EXPIRE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'OK'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EVALSHA","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call. Two keys touched. Returns either","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{1, OK, remaining}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{0, reason, retry_ms}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". No race conditions because Lua is single-threaded inside Redis. No \"check then increment\" gap that other workers can sneak through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The math on whether this is heavy","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The math on whether this is heavy","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For your 100,000 requests, with 100 PATCHes batched into 1 batch_update call per 100 deals, you're realistically making more like","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1,000–2,000 actual API calls","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(assuming you're using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"properly). But let's pretend you really make all 100k.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"At HubSpot's ceiling of ~240 calls/sec across both buckets, 100k calls take roughly","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"7 minutes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of wall time. That means:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis ops/sec:","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240. A laptop-grade Redis instance handles 50,000+. You're using under half a percent.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-request overhead:","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~0.3–1.0 ms for an","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EVALSHA","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"against local-network Redis.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per HubSpot call:","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"80–400 ms typical latency.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So the limiter adds something like","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0.3% to each request's wall time","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The rate limit itself is forcing you to wait 4–40 ms between calls anyway; adding 0.5 ms of bookkeeping is invisible.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"This is a pattern worth internalizing:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the rate limiter cannot be the bottleneck","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", because the thing it's gating (HubSpot itself) is two to three orders of magnitude slower than the gating mechanism.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Things that would make it heavy (and how to avoid them)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Things that would make it heavy (and how to avoid them)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Multiple round trips per request","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GET","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ZADD","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"separately, you've tripled the latency and broken atomicity. Use Lua. One trip.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No connection pooling","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— opening a TCP connection to Redis per request is 10× more expensive than the Redis op itself. Laravel's Redis facade pools by default; just don't fight it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Persisting accounting to MySQL","depth":28,"on_screen":false,"role_description":"text"}]...
|
5550679392086813370
|
-9219238462071382700
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end
redis
.
call
(
'ZADD'
,
KEYS
[
1
]
,
ARGV
[
1
]
,
ARGV
[
5
]
)
redis
.
call
(
'PEXPIRE'
,
KEYS
[
1
]
,
ARGV
[
2
]
+
1000
)
local
d
=
redis
.
call
(
'INCR'
,
KEYS
[
2
]
)
if
d
==
1
then
redis
.
call
(
'EXPIRE'
,
KEYS
[
2
]
,
ARGV
[
6
]
)
end
return
{
1
,
'OK'
,
tonumber
(
ARGV
[
3
]
)
-
burst_used
-
1
}
One
EVALSHA
call. Two keys touched. Returns either
{1, OK, remaining}
or
{0, reason, retry_ms}
. No race conditions because Lua is single-threaded inside Redis. No "check then increment" gap that other workers can sneak through.
The math on whether this is heavy
The math on whether this is heavy
For your 100,000 requests, with 100 PATCHes batched into 1 batch_update call per 100 deals, you're realistically making more like
1,000–2,000 actual API calls
(assuming you're using
/batch/update
and
/batch/read
properly). But let's pretend you really make all 100k.
At HubSpot's ceiling of ~240 calls/sec across both buckets, 100k calls take roughly
7 minutes
of wall time. That means:
Redis ops/sec:
~240. A laptop-grade Redis instance handles 50,000+. You're using under half a percent.
Per-request overhead:
~0.3–1.0 ms for an
EVALSHA
against local-network Redis.
Per HubSpot call:
80–400 ms typical latency.
So the limiter adds something like
0.3% to each request's wall time
. The rate limit itself is forcing you to wait 4–40 ms between calls anyway; adding 0.5 ms of bookkeeping is invisible.
This is a pattern worth internalizing:
the rate limiter cannot be the bottleneck
, because the thing it's gating (HubSpot itself) is two to three orders of magnitude slower than the gating mechanism.
Things that would make it heavy (and how to avoid them)
Things that would make it heavy (and how to avoid them)
Multiple round trips per request
— if you
GET
then
INCR
then
ZADD
separately, you've tripled the latency and broken atomicity. Use Lua. One trip.
No connection pooling
— opening a TCP connection to Redis per request is 10× more expensive than the Redis op itself. Laravel's Redis facade pools by default; just don't fight it.
Persisting accounting to MySQL...
|
3619
|
NULL
|
NULL
|
NULL
|
|
3683
|
135
|
1
|
2026-05-07T12:35:48.959009+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157348959_m1.jpg...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
1
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 1 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 1 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 1 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6311466412596879756
|
-6772435049932821109
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
1
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 1 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3681
|
NULL
|
NULL
|
NULL
|
|
3684
|
136
|
1
|
2026-05-07T12:35:48.959180+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157348959_m2.jpg...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
1
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 1 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.4710771,"top":0.19952115,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 1 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 1 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6311466412596879756
|
-6772435049932821109
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
1
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 1 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3682
|
NULL
|
NULL
|
NULL
|
|
3784
|
138
|
1
|
2026-05-07T12:40:58.026813+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157658026_m2.jpg...
|
PhpStorm
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Find in Files
48 matches in 7 files
File mask:
*.p Find in Files
48 matches in 7 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
MatchActivityCrmData
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Exceptions
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Component/Queue/Job
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Activities/ActivityProvider/UserPilot
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm/Delete
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Playbooks
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm
/Users/lukas/jiminny/app/vendor/hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields
/Users/lukas/jiminny/app/app/Services/Crm/Copper
/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn
/Users/lukas/jiminny/app/app/Notifications/Channels
/Users/lukas/jiminny/app/tests/Unit
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Interactions/Settings/Teams
/Users/lukas/jiminny/app/app/Exceptions/Crm
/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints
/Users/lukas/jiminny/app/config
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections
/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting
/Users/lukas/jiminny/app/app/Component/FeatureFlags
/Users/lukas/jiminny/app/app/Component/Activity
/Users/lukas/jiminny/app/app/Component/ActivitySearch
/Users/lukas/jiminny/app/tests/Unit/Events/Activities/Crm
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Pagination
/Users/lukas/jiminny/app/app/Console/Commands/Dev
/Users/lukas/jiminny/app/front-end
/Users/lukas/jiminny/app/app/Component/Prophet
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Component/AskAnything
/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/OnDemandLevel/Events
/Users/lukas/jiminny/app/app/Component/AskAnything/Events
/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/DealLevel/Traits
/Users/lukas/jiminny/app/app/Component/ProphetAi
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/d1e2c340-64e9-49c6-aa9a-196201874532
/Users/lukas/jiminny/app/app/Http/Controllers/API/Page
/Users/lukas/jiminny/app/front-end/src/components/ondemand/ActivityList
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/5b1549d5-9876-4d9e-9ce3-025f12a83283
/Users/lukas/jiminny/app/app/Contracts/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/Kiosk
/Users/lukas/jiminny/app/app/Component/AiAutomation/Actions
/Users/lukas/jiminny/app/app/Services/Activity/HubSpot
/Users/lukas/jiminny/app/app/Services/Crm/Pipedrive
/Users/lukas/jiminny/app/app/Jobs/Activity/Import
/Users/lukas/jiminny/app/app/Events/Import
/Users/lukas/jiminny/app/app/Events/Activities/Dialers
/Users/lukas/jiminny/app/tests
/Users/lukas/jiminny/app/app/Events/Activities
/Users/lukas/jiminny/app/tests/Unit/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Console/Commands/Analytics
/Users/lukas/jiminny/app/tests/Unit/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Http/Middleware
/Users/lukas/jiminny/app/app/Http/Controllers/Auth
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Api
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors
/Users/lukas/jiminny/app/app/Services/Crm/Close
/Users/lukas/jiminny/app/app/Services
/Users/lukas/jiminny/app/app/Http/Transformers
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Pipedrive
/Users/lukas/jiminny/app/app/Listeners/Activities/Crm/Summary
/Users/lukas/jiminny/app/app/Services/Activity/AmazonConnect
/Users/lukas/jiminny/app/app/Models/Participant
/Users/lukas/jiminny/app/app/Events/Activities/Connections
/Users/lukas/jiminny/app/app/Listeners/Activities/Crm
/Users/lukas/jiminny/app/app/Services/Calendar
/Users/lukas/jiminny/app/app/Jobs/DealRisks
/Users/lukas/jiminny/app/front-end/src
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors/MetadataAccessors
/Users/lukas/jiminny/app/app/Component/Encoding/Job
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Filters
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Activity/BaseService/Api/Token...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Find in Files","depth":1,"bounds":{"left":0.2992021,"top":0.12609737,"width":0.024601065,"height":0.013567438},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"48 matches in 7 files","depth":1,"bounds":{"left":0.32779256,"top":0.12609737,"width":0.042220745,"height":0.013567438},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"File mask:","depth":1,"bounds":{"left":0.5315825,"top":0.12290503,"width":0.029587766,"height":0.019952115},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"*.php","depth":1,"bounds":{"left":0.5621675,"top":0.11971269,"width":0.027925532,"height":0.027134877},"on_screen":true,"value":"*.php","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"*.php","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Auto","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXTextField","text":"*.php","depth":2,"bounds":{"left":0.5661569,"top":0.12609737,"width":0.011635638,"height":0.013567438},"on_screen":true,"value":"*.php","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":1,"bounds":{"left":0.5944149,"top":0.12290503,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pin Window","depth":1,"bounds":{"left":0.6037234,"top":0.12290503,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":1,"bounds":{"left":0.2962101,"top":0.15403032,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"MatchActivityCrmData","depth":2,"bounds":{"left":0.30718085,"top":0.15403032,"width":0.26196808,"height":0.017557861},"on_screen":true,"value":"MatchActivityCrmData","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.578125,"top":0.15403032,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match case","depth":1,"bounds":{"left":0.5880984,"top":0.15403032,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":1,"bounds":{"left":0.59674203,"top":0.15403032,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":1,"bounds":{"left":0.60538566,"top":0.15403032,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":2,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In Project","depth":2,"bounds":{"left":0.2992021,"top":0.1867518,"width":0.022938829,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Module","depth":2,"bounds":{"left":0.32214096,"top":0.1867518,"width":0.019281914,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Directory","depth":2,"bounds":{"left":0.3414229,"top":0.1867518,"width":0.022606382,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Scope","depth":2,"bounds":{"left":0.36402926,"top":0.1867518,"width":0.017287234,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Module","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.099734046,"height":0.0},"on_screen":false,"role_description":"pop up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"/Users/lukas/jiminny/app/app/Jobs/Crm","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.1974734,"height":0.0},"on_screen":false,"value":"/Users/lukas/jiminny/app/app/Jobs/Crm","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Exceptions","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Queue/Job","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/AutomatedReports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/ActivityProvider/UserPilot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Delete","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Providers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Playbooks","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Reports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/resources/views/emails/reports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Mail/Reports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/routes","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/database/migrations","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/V2","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/DealInsights","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Policies","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Helpers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Teams","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/storage/logs","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Internal","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Transcription","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Observers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Mail","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/User","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Activity","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Activity/Event","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Sidekick","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Bots","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Bots","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/MeetingBot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/RingCentral","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/Gmail","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Mailbox","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end/src/composables","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Calendars","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Queue","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Transcription/Job","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Listeners","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Listeners","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Traits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Calendar/Command","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/.idea/queries","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Copper","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Notifications/Channels","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Interactions/Settings/Teams","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Exceptions/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/config","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/FeatureFlags","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Activity","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Events/Activities/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Pagination","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Dev","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Prophet","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AskAnything","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/OnDemandLevel/Events","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AskAnything/Events","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/DealLevel/Traits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ProphetAi","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/d1e2c340-64e9-49c6-aa9a-196201874532","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/Page","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end/src/components/ondemand/ActivityList","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/5b1549d5-9876-4d9e-9ce3-025f12a83283","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Contracts/Repositories","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Kiosk","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AiAutomation/Actions","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/HubSpot","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Pipedrive","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Activity/Import","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Import","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Dialers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Jobs/Activity/PushSummaryToCrm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Analytics","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Kiosk/AutomatedReports","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Middleware","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Auth","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Api","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Close","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Transformers","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Pipedrive","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Crm/Summary","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/AmazonConnect","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Participant","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Connections","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Crm","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Calendar","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/DealRisks","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end/src","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors/MetadataAccessors","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Encoding/Job","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Filters","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp/ServiceTraits","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/BaseService/Api/Token","depth":6,"on_screen":false,"role_description":"text"}]...
|
-3763829770624999411
|
-4950787625667955008
|
visual_change
|
accessibility
|
NULL
|
Find in Files
48 matches in 7 files
File mask:
*.p Find in Files
48 matches in 7 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
MatchActivityCrmData
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Exceptions
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Component/Queue/Job
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Activities/ActivityProvider/UserPilot
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm/Delete
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Playbooks
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm
/Users/lukas/jiminny/app/vendor/hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields
/Users/lukas/jiminny/app/app/Services/Crm/Copper
/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn
/Users/lukas/jiminny/app/app/Notifications/Channels
/Users/lukas/jiminny/app/tests/Unit
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Interactions/Settings/Teams
/Users/lukas/jiminny/app/app/Exceptions/Crm
/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints
/Users/lukas/jiminny/app/config
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections
/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting
/Users/lukas/jiminny/app/app/Component/FeatureFlags
/Users/lukas/jiminny/app/app/Component/Activity
/Users/lukas/jiminny/app/app/Component/ActivitySearch
/Users/lukas/jiminny/app/tests/Unit/Events/Activities/Crm
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Pagination
/Users/lukas/jiminny/app/app/Console/Commands/Dev
/Users/lukas/jiminny/app/front-end
/Users/lukas/jiminny/app/app/Component/Prophet
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Component/AskAnything
/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/OnDemandLevel/Events
/Users/lukas/jiminny/app/app/Component/AskAnything/Events
/Users/lukas/jiminny/app/app/Component/AskJiminnyAi/DealLevel/Traits
/Users/lukas/jiminny/app/app/Component/ProphetAi
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/d1e2c340-64e9-49c6-aa9a-196201874532
/Users/lukas/jiminny/app/app/Http/Controllers/API/Page
/Users/lukas/jiminny/app/front-end/src/components/ondemand/ActivityList
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/5b1549d5-9876-4d9e-9ce3-025f12a83283
/Users/lukas/jiminny/app/app/Contracts/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/Kiosk
/Users/lukas/jiminny/app/app/Component/AiAutomation/Actions
/Users/lukas/jiminny/app/app/Services/Activity/HubSpot
/Users/lukas/jiminny/app/app/Services/Crm/Pipedrive
/Users/lukas/jiminny/app/app/Jobs/Activity/Import
/Users/lukas/jiminny/app/app/Events/Import
/Users/lukas/jiminny/app/app/Events/Activities/Dialers
/Users/lukas/jiminny/app/tests
/Users/lukas/jiminny/app/app/Events/Activities
/Users/lukas/jiminny/app/tests/Unit/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Console/Commands/Analytics
/Users/lukas/jiminny/app/tests/Unit/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Http/Middleware
/Users/lukas/jiminny/app/app/Http/Controllers/Auth
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Api
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors
/Users/lukas/jiminny/app/app/Services/Crm/Close
/Users/lukas/jiminny/app/app/Services
/Users/lukas/jiminny/app/app/Http/Transformers
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Pipedrive
/Users/lukas/jiminny/app/app/Listeners/Activities/Crm/Summary
/Users/lukas/jiminny/app/app/Services/Activity/AmazonConnect
/Users/lukas/jiminny/app/app/Models/Participant
/Users/lukas/jiminny/app/app/Events/Activities/Connections
/Users/lukas/jiminny/app/app/Listeners/Activities/Crm
/Users/lukas/jiminny/app/app/Services/Calendar
/Users/lukas/jiminny/app/app/Jobs/DealRisks
/Users/lukas/jiminny/app/front-end/src
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Accessors/MetadataAccessors
/Users/lukas/jiminny/app/app/Component/Encoding/Job
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/Filters
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Activity/BaseService/Api/Token...
|
3783
|
NULL
|
NULL
|
NULL
|
|
3787
|
137
|
1
|
2026-05-07T12:41:20.893454+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157680893_m1.jpg...
|
PhpStorm
|
faVsco.js – RematchActivityOnCrmObjectDetach.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(wbl# Lukas/Stefka 121 • in 1h 49m100% <478DEV (docker)DOCKERDEV (docker)H82APP (-zsh)artisan-schedule:artisan-schedule_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2: jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00:startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_Lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matching contact 2Matching contact 3Matchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:41:20T81₴6DEV...
|
NULL
|
9101996530082179088
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(wbl# Lukas/Stefka 121 • in 1h 49m100% <478DEV (docker)DOCKERDEV (docker)H82APP (-zsh)artisan-schedule:artisan-schedule_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2: jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00:startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_Lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matching contact 2Matching contact 3Matchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:41:20T81₴6DEV...
|
3786
|
NULL
|
NULL
|
NULL
|
|
3871
|
140
|
1
|
2026-05-07T12:46:20.803367+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157980803_m2.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.5299202,"top":0.075019956,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.55019945,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.5588431,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7435968332378409480
|
-9174767349685819658
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh...
|
3869
|
NULL
|
NULL
|
NULL
|
|
3872
|
139
|
1
|
2026-05-07T12:46:20.702636+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157980702_m1.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(wbl# Lukas/Stefka 121 • in 1h 44 m100% <478DEV (docker)DOCKERO 81DEV (docker)H82APP (-zsh)artisan-schedule:artisan-schedule_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2: jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00:startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_Lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matching contact 2Matching contact 3Matchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:46:20T81₴6DEV...
|
NULL
|
-4184005961339412008
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(wbl# Lukas/Stefka 121 • in 1h 44 m100% <478DEV (docker)DOCKERO 81DEV (docker)H82APP (-zsh)artisan-schedule:artisan-schedule_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2: jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00:startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_Lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matching contact 2Matching contact 3Matchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:46:20T81₴6DEV...
|
3870
|
NULL
|
NULL
|
NULL
|
|
3926
|
142
|
1
|
2026-05-07T12:51:11.795963+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158271795_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Search History
Hubspot
New Line
Replace History
Replace
New Line
Previous Occurrence
Next Occurrence
Search All
Search Backward
Search Forward
Match сase
Words
Regex
?
Close
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"0a210f2f-6a6e-46de-8954-aa0bddcff83c","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1351,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1351,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1351,"provider":"google","refreshToken":"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c","state":"full-refresh"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1351,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1351,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1366,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1366,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1366,"provider":"google","refreshToken":"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4","state":"full-refresh"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1366,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1366,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: Calendar sync job dispatched {"calendar_id":378} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1421,"provider":"office"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1421,"provider":"office"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1421,"provider":"office","refreshToken":"e63f91c806cda3fadf5eeb79ff8e2bfcc8cd41119a5f8f215ef0b88d0efb9ce6","state":"connected"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","from":null,"to":null,"delta":"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=","last_sync":"2026-01-19 07:48:40","dateMode":"daily"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountObserver] Refresh token was modified, encrypting {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {"provider":"pipedrive","user_id":241,"message":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1421,"provider":"office","state":"connected"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: Calendar sync job dispatched {"calendar_id":504} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.NOTICE: Calendar sync end {"retrieved_calendars":31,"processed_calendars":3} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"calendar:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Google Calendar] Failed to watch channel for calendar {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Calendar] Sync failed {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1421,"provider":"office"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1421,"provider":"office"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {"calendarId":"9e8b1a2c-1a8f-42bd-b161-810fc0baf540","from":null,"to":null,"delta":"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ","last_sync":"2026-05-06 15:58:35","dateMode":"daily"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":89,"team_id":2} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {"calendarId":"9e8b1a2c-1a8f-42bd-b161-810fc0baf540"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:44:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"02c82719-4b7f-46bc-b6df-15da02e7d1ac","trace_id":"984d36dd-d791-493e-89ce-84cdfc3645d6"}
[2026-05-07 12:44:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"02c82719-4b7f-46bc-b6df-15da02e7d1ac","trace_id":"984d36dd-d791-493e-89ce-84cdfc3645d6"}
[2026-05-07 12:44:16] local.NOTICE: Monitoring start {"correlation_id":"37777418-52ab-4b19-b282-1ce5fb875ed8","trace_id":"7a8d8508-d8bc-4a24-8100-7be23e473dc5"}
[2026-05-07 12:44:16] local.NOTICE: Monitoring end {"correlation_id":"37777418-52ab-4b19-b282-1ce5fb875ed8","trace_id":"7a8d8508-d8bc-4a24-8100-7be23e473dc5"}
[2026-05-07 12:44:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"221835f1-beb7-4be5-addf-b7557e9d7c4d","trace_id":"08e931d6-1301-435a-8520-1c67b17152bb"}
[2026-05-07 12:44:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"221835f1-beb7-4be5-addf-b7557e9d7c4d","trace_id":"08e931d6-1301-435a-8520-1c67b17152bb"}
[2026-05-07 12:44:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:31] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:32] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5df90379-2a6b-469f-8215-67764b135217","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5df90379-2a6b-469f-8215-67764b135217","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [SyncObjects] Before memory usage: {"team":"6473c918-d8db-4ded-a52b-4febfd7b7c02","usage":24921568,"real_usage":65011712,"pid":32723} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-28 06:31:37"}}} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [SyncObjects] Sync finished {"team":"6473c918-d8db-4ded-a52b-4febfd7b7c02","provider":"salesforce","status":"disconnected","duration_ms":36.99,"usage":24883008,"real_usage":65011712,"pid":32723,"reason":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [SyncObjects] Before memory usage: {"team":"51467630-d89d-480b-be20-933e64a042f7","usage":24921656,"real_usage":65011712,"pid":32723} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [SyncObjects] Sync finished {"team":"51467630-d89d-480b-be20-933e64a042f7","provider":"pipedrive","status":"disconnected","duration_ms":36.31,"usage":24884512,"real_usage":65011712,"pid":32723,"reason":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:38] local.INFO: [SyncObjects] Before memory usage: {"team":"396ed57c-e3c4-49be-8290-37c32955f7c7","usage":24923096,"real_usage":65011712,"pid":32723} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:38] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"copper","crm_owner":333,"team_id":27} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:39] local.NOTICE: Leads unavailable {"method":"POST","endpoint":"leads/search","options":[],"body":{"minimum_modified_date":1778156061,"sort_by":"date_modified","page_number":1},"status_code":403,"error":"{\"success\":false,\"status\":403,\"message\":\"Feature not enabled\"}"} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {"team":"396ed57c-e3c4-49be-8290-37c32955f7c7","provider":"copper","status":"completed","duration_ms":1692.49,"usage":24924720,"real_usage":65011712,"pid":32723} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Before memory usage: {"team":"fda3cbdf-1117-4ba5-86f8-775f548b3a28","usage":25127728,"real_usage":65011712,"pid":32723} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {"team":"fda3cbdf-1117-4ba5-86f8-775f548b3a28","provider":"pipedrive","status":"disconnected","duration_ms":38.7,"usage":25134888,"real_usage":65011712,"pid":32723,"reason":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SyncObjects] Before memory usage: {"team":"3ff5a02a-86fb-4357-b1d6-a04e26c38602","usage":25173792,"real_usage":65011712,"pid":32723} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1219,"provider":"close"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1219,"provider":"close"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"close","crm_owner":257,"team_id":31} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {"team":"3ff5a02a-86fb-4357-b1d6-a04e26c38602","provider":"close","status":"completed","duration_ms":2067.19,"usage":25267416,"real_usage":65011712,"pid":32723} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Before memory usage: {"team":"1640a0ac-19da-4c3b-90f7-87525f07a6d2","usage":25246056,"real_usage":65011712,"pid":32723} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.WARNING: [Bullhorn] Account not connected for user {"userId":"941d12a6-e84f-4c3a-a4c8-2ef433792095","account":{"Jiminny\\Models\\SocialAccount":{"id":348,"sociable_id":121,"provider_user_id":null,"expires":1733727508,"refresh_token_expires":null,"provider":"bullhorn","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2021-04-06 11:07:26","updated_at":"2024-12-09 15:10:40"}}} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"bullhorn","crm_owner":121,"team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"bullhorn","team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"bullhorn","team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {"team":"1640a0ac-19da-4c3b-90f7-87525f07a6d2","provider":"bullhorn","status":"disconnected","duration_ms":34.81,"usage":25249136,"real_usage":65011712,"pid":32723,"reason":"Your Bullhorn account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [SyncObjects] Before memory usage: {"team":"0c33bf2d-1c77-4200-8ed6-6147ad444c30","usage":25286952,"real_usage":65011712,"pid":32723} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.WARNING: [Salesforce] Account not connected for user {"userId":"ed89227b-e364-4dfb-b4bf-343f154bf21e","account":{"Jiminny\\Models\\SocialAccount":{"id":1360,"sociable_id":245,"provider_user_id":"0052g000003frZNAAY","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-02 06:11:55","updated_at":"2024-12-11 08:50:23"}}} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":245,"team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [SyncObjects] Sync finished {"team":"0c33bf2d-1c77-4200-8ed6-6147ad444c30","provider":"salesforce","status":"disconnected","duration_ms":37.57,"usage":25208176,"real_usage":65011712,"pid":32723,"reason":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [SyncObjects] Before memory usage: {"team":"1ece66c8-feb1-4df1-b321-21607daf4623","usage":25246656,"real_usage":65011712,"pid":32723} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"integration-app","crm_owner":1695,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [integration-app] Syncing opportunities {"parameters":{"since":"2026-05-07 12:14:31","strategy":"lastModified"},"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-deals/run","full_target":"connections/zohocrm/actions/query-deals/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing opportunities finished successfully {"parameters":{"since":"2026-05-07 12:14:31","strategy":"lastModified"},"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing accounts {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-companies/run","full_target":"connections/zohocrm/actions/query-companies/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing accounts finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing contacts {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-contacts/run","full_target":"connections/zohocrm/actions/query-contacts/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing contacts finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing leads {"since":"2026-05-07 12:14:31","to":null,"crm_profile_id":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/get-converted-leads/run","full_target":"connections/zohocrm/actions/get-converted-leads/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:52] local.INFO: [integration-app] Syncing leads finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:52] local.INFO: [SyncObjects] Sync finished {"team":"1ece66c8-feb1-4df1-b321-21607daf4623","provider":"integration-app","status":"completed","duration_ms":3759.34,"usage":25425288,"real_usage":65011712,"pid":32723} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:45:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b9dada39-e7c2-4562-b6e3-1be261188b4d","trace_id":"6ad37f62-7774-492d-a001-581208f10fff"}
[2026-05-07 12:45:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b9dada39-e7c2-4562-b6e3-1be261188b4d","trace_id":"6ad37f62-7774-492d-a001-581208f10fff"}
[2026-05-07 12:45:22] local.NOTICE: Monitoring start {"correlation_id":"5bffe03c-eea7-43cb-82ba-b7bedd3144cf","trace_id":"9f1d5643-8b38-4a14-80b7-70e194f790b6"}
[2026-05-07 12:45:22] local.NOTICE: Monitoring end {"correlation_id":"5bffe03c-eea7-43cb-82ba-b7bedd3144cf","trace_id":"9f1d5643-8b38-4a14-80b7-70e194f790b6"}
[2026-05-07 12:45:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97384b1a-e94d-4830-b6f6-49c02ac78337","trace_id":"f14bf171-730f-4e87-aaca-cb102b036424"}
[2026-05-07 12:45:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97384b1a-e94d-4830-b6f6-49c02ac78337","trace_id":"f14bf171-730f-4e87-aaca-cb102b036424"}
[2026-05-07 12:45:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f","trace_id":"2a849c4d-d63f-4329-b30f-f0a2ff9478a6"}
[2026-05-07 12:45:42] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f","trace_id":"2a849c4d-d63f-4329-b30f-f0a2ff9478a6"}
[2026-05-07 12:45:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"da32c044-6ed8-4ca9-aa16-4012f11b3f2a","trace_id":"4d49b72a-fa07-4d03-b5bd-14a94a1d7487"}
[2026-05-07 12:45:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"da32c044-6ed8-4ca9-aa16-4012f11b3f2a","trace_id":"4d49b72a-fa07-4d03-b5bd-14a94a1d7487"}
[2026-05-07 12:45:48] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:48] local.INFO: Running pre-meeting notification command {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:48] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:50] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:52] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:40","to":"12:45"} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:35","to":"02:40"} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:55] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:57] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:57] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:46:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeComm...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.53457445,"top":0.07980846,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Hubspot","depth":4,"bounds":{"left":0.5455452,"top":0.07980846,"width":0.11469415,"height":0.015961692},"on_screen":true,"value":"Hubspot","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.66921544,"top":0.07980846,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.68484044,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.69348407,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search All","depth":4,"bounds":{"left":0.7044548,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Backward","depth":4,"bounds":{"left":0.7130984,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Forward","depth":4,"bounds":{"left":0.72174203,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match сase","depth":4,"bounds":{"left":0.73038566,"top":0.07821229,"width":0.032247342,"height":0.01915403},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":4,"bounds":{"left":0.76263297,"top":0.07821229,"width":0.023271276,"height":0.01915403},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":4,"bounds":{"left":0.7859042,"top":0.07821229,"width":0.022938829,"height":0.01915403},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"?","depth":4,"bounds":{"left":0.8088431,"top":0.08220271,"width":0.0019946808,"height":0.011173184},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.97539896,"top":0.07821229,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"\\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"0a210f2f-6a6e-46de-8954-aa0bddcff83c\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1421,\"provider\":\"office\",\"refreshToken\":\"e63f91c806cda3fadf5eeb79ff8e2bfcc8cd41119a5f8f215ef0b88d0efb9ce6\",\"state\":\"connected\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountObserver] Refresh token was modified, encrypting {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1421,\"provider\":\"office\",\"state\":\"connected\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:44:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"02c82719-4b7f-46bc-b6df-15da02e7d1ac\",\"trace_id\":\"984d36dd-d791-493e-89ce-84cdfc3645d6\"}\n[2026-05-07 12:44:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"02c82719-4b7f-46bc-b6df-15da02e7d1ac\",\"trace_id\":\"984d36dd-d791-493e-89ce-84cdfc3645d6\"}\n[2026-05-07 12:44:16] local.NOTICE: Monitoring start {\"correlation_id\":\"37777418-52ab-4b19-b282-1ce5fb875ed8\",\"trace_id\":\"7a8d8508-d8bc-4a24-8100-7be23e473dc5\"}\n[2026-05-07 12:44:16] local.NOTICE: Monitoring end {\"correlation_id\":\"37777418-52ab-4b19-b282-1ce5fb875ed8\",\"trace_id\":\"7a8d8508-d8bc-4a24-8100-7be23e473dc5\"}\n[2026-05-07 12:44:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"221835f1-beb7-4be5-addf-b7557e9d7c4d\",\"trace_id\":\"08e931d6-1301-435a-8520-1c67b17152bb\"}\n[2026-05-07 12:44:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"221835f1-beb7-4be5-addf-b7557e9d7c4d\",\"trace_id\":\"08e931d6-1301-435a-8520-1c67b17152bb\"}\n[2026-05-07 12:44:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:31] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:32] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:32] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5df90379-2a6b-469f-8215-67764b135217\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5df90379-2a6b-469f-8215-67764b135217\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"6473c918-d8db-4ded-a52b-4febfd7b7c02\",\"usage\":24921568,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-04-28 06:31:37\"}}} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [SyncObjects] Sync finished {\"team\":\"6473c918-d8db-4ded-a52b-4febfd7b7c02\",\"provider\":\"salesforce\",\"status\":\"disconnected\",\"duration_ms\":36.99,\"usage\":24883008,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"51467630-d89d-480b-be20-933e64a042f7\",\"usage\":24921656,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [SyncObjects] Sync finished {\"team\":\"51467630-d89d-480b-be20-933e64a042f7\",\"provider\":\"pipedrive\",\"status\":\"disconnected\",\"duration_ms\":36.31,\"usage\":24884512,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:38] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"396ed57c-e3c4-49be-8290-37c32955f7c7\",\"usage\":24923096,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:38] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"copper\",\"crm_owner\":333,\"team_id\":27} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:39] local.NOTICE: Leads unavailable {\"method\":\"POST\",\"endpoint\":\"leads/search\",\"options\":[],\"body\":{\"minimum_modified_date\":1778156061,\"sort_by\":\"date_modified\",\"page_number\":1},\"status_code\":403,\"error\":\"{\\\"success\\\":false,\\\"status\\\":403,\\\"message\\\":\\\"Feature not enabled\\\"}\"} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {\"team\":\"396ed57c-e3c4-49be-8290-37c32955f7c7\",\"provider\":\"copper\",\"status\":\"completed\",\"duration_ms\":1692.49,\"usage\":24924720,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"fda3cbdf-1117-4ba5-86f8-775f548b3a28\",\"usage\":25127728,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {\"team\":\"fda3cbdf-1117-4ba5-86f8-775f548b3a28\",\"provider\":\"pipedrive\",\"status\":\"disconnected\",\"duration_ms\":38.7,\"usage\":25134888,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"3ff5a02a-86fb-4357-b1d6-a04e26c38602\",\"usage\":25173792,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1219,\"provider\":\"close\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1219,\"provider\":\"close\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"close\",\"crm_owner\":257,\"team_id\":31} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {\"team\":\"3ff5a02a-86fb-4357-b1d6-a04e26c38602\",\"provider\":\"close\",\"status\":\"completed\",\"duration_ms\":2067.19,\"usage\":25267416,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"1640a0ac-19da-4c3b-90f7-87525f07a6d2\",\"usage\":25246056,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.WARNING: [Bullhorn] Account not connected for user {\"userId\":\"941d12a6-e84f-4c3a-a4c8-2ef433792095\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":348,\"sociable_id\":121,\"provider_user_id\":null,\"expires\":1733727508,\"refresh_token_expires\":null,\"provider\":\"bullhorn\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2021-04-06 11:07:26\",\"updated_at\":\"2024-12-09 15:10:40\"}}} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"bullhorn\",\"crm_owner\":121,\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"bullhorn\",\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"bullhorn\",\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {\"team\":\"1640a0ac-19da-4c3b-90f7-87525f07a6d2\",\"provider\":\"bullhorn\",\"status\":\"disconnected\",\"duration_ms\":34.81,\"usage\":25249136,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Bullhorn account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"0c33bf2d-1c77-4200-8ed6-6147ad444c30\",\"usage\":25286952,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"ed89227b-e364-4dfb-b4bf-343f154bf21e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1360,\"sociable_id\":245,\"provider_user_id\":\"0052g000003frZNAAY\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-02 06:11:55\",\"updated_at\":\"2024-12-11 08:50:23\"}}} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":245,\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [SyncObjects] Sync finished {\"team\":\"0c33bf2d-1c77-4200-8ed6-6147ad444c30\",\"provider\":\"salesforce\",\"status\":\"disconnected\",\"duration_ms\":37.57,\"usage\":25208176,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"usage\":25246656,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [integration-app] Syncing opportunities {\"parameters\":{\"since\":\"2026-05-07 12:14:31\",\"strategy\":\"lastModified\"},\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-deals/run\",\"full_target\":\"connections/zohocrm/actions/query-deals/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing opportunities finished successfully {\"parameters\":{\"since\":\"2026-05-07 12:14:31\",\"strategy\":\"lastModified\"},\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing accounts {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-companies/run\",\"full_target\":\"connections/zohocrm/actions/query-companies/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing accounts finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing contacts {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-contacts/run\",\"full_target\":\"connections/zohocrm/actions/query-contacts/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing contacts finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing leads {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"crm_profile_id\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/get-converted-leads/run\",\"full_target\":\"connections/zohocrm/actions/get-converted-leads/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:52] local.INFO: [integration-app] Syncing leads finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:52] local.INFO: [SyncObjects] Sync finished {\"team\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"provider\":\"integration-app\",\"status\":\"completed\",\"duration_ms\":3759.34,\"usage\":25425288,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:45:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b9dada39-e7c2-4562-b6e3-1be261188b4d\",\"trace_id\":\"6ad37f62-7774-492d-a001-581208f10fff\"}\n[2026-05-07 12:45:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b9dada39-e7c2-4562-b6e3-1be261188b4d\",\"trace_id\":\"6ad37f62-7774-492d-a001-581208f10fff\"}\n[2026-05-07 12:45:22] local.NOTICE: Monitoring start {\"correlation_id\":\"5bffe03c-eea7-43cb-82ba-b7bedd3144cf\",\"trace_id\":\"9f1d5643-8b38-4a14-80b7-70e194f790b6\"}\n[2026-05-07 12:45:22] local.NOTICE: Monitoring end {\"correlation_id\":\"5bffe03c-eea7-43cb-82ba-b7bedd3144cf\",\"trace_id\":\"9f1d5643-8b38-4a14-80b7-70e194f790b6\"}\n[2026-05-07 12:45:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97384b1a-e94d-4830-b6f6-49c02ac78337\",\"trace_id\":\"f14bf171-730f-4e87-aaca-cb102b036424\"}\n[2026-05-07 12:45:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97384b1a-e94d-4830-b6f6-49c02ac78337\",\"trace_id\":\"f14bf171-730f-4e87-aaca-cb102b036424\"}\n[2026-05-07 12:45:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f\",\"trace_id\":\"2a849c4d-d63f-4329-b30f-f0a2ff9478a6\"}\n[2026-05-07 12:45:42] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f\",\"trace_id\":\"2a849c4d-d63f-4329-b30f-f0a2ff9478a6\"}\n[2026-05-07 12:45:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"da32c044-6ed8-4ca9-aa16-4012f11b3f2a\",\"trace_id\":\"4d49b72a-fa07-4d03-b5bd-14a94a1d7487\"}\n[2026-05-07 12:45:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"da32c044-6ed8-4ca9-aa16-4012f11b3f2a\",\"trace_id\":\"4d49b72a-fa07-4d03-b5bd-14a94a1d7487\"}\n[2026-05-07 12:45:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:48] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:52] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:40\",\"to\":\"12:45\"} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:35\",\"to\":\"02:40\"} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:55] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:57] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:57] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:46:01] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"df1f9179-a47d-4442-a7df-98cf14f4e1dc\",\"trace_id\":\"7fb8862b-8dfb-42e4-97bc-65ad622d3274\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:48:01.734581Z\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"df1f9179-a47d-4442-a7df-98cf14f4e1dc\",\"trace_id\":\"7fb8862b-8dfb-42e4-97bc-65ad622d3274\"}\n[2026-05-07 12:46:02] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812325,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812326,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812327,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812328,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812329,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812330,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.ALERT: [SyncActivity] Failed {\"import_id\":812325,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eba7d27-ef66-41b2-9d8b-3625e24eb562\",\"trace_id\":\"274ecb4f-9ec7-4b50-af01-b7934787fd7c\"}\n[2026-05-07 12:46:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eba7d27-ef66-41b2-9d8b-3625e24eb562\",\"trace_id\":\"274ecb4f-9ec7-4b50-af01-b7934787fd7c\"}\n[2026-05-07 12:46:08] local.ALERT: [SyncActivity] Failed {\"import_id\":812326,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.ALERT: [SyncActivity] Failed {\"import_id\":812327,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.ALERT: [SyncActivity] Failed {\"import_id\":812328,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.ALERT: [SyncActivity] Failed {\"import_id\":812329,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":408,\"provider\":\"hubspot\",\"refreshToken\":\"de4e47eb985578f4218833e763e31059e88b562e87e10749b3389be2328f0aa7\",\"state\":\"connected\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5048e6cf-9673-44b5-abbc-6bf8dd357cd0\",\"trace_id\":\"7cb59ad0-c86f-429a-9b57-ad0a8e45965a\"}\n[2026-05-07 12:46:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5048e6cf-9673-44b5-abbc-6bf8dd357cd0\",\"trace_id\":\"7cb59ad0-c86f-429a-9b57-ad0a8e45965a\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":408,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SyncActivity] Start {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:29:00\",\"to\":\"2026-05-07 12:45:00\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:11] local.INFO: [SyncActivity] End {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:11] local.INFO: [SyncActivity] Memory usage {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27584720,\"memory_real_usage\":67108864,\"pid\":32727} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":187.9,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:47:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"be201f4f-734a-4724-8a08-645e6c42815a\",\"trace_id\":\"cb290f49-fb41-4755-8585-b3c209e25795\"}\n[2026-05-07 12:47:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"be201f4f-734a-4724-8a08-645e6c42815a\",\"trace_id\":\"cb290f49-fb41-4755-8585-b3c209e25795\"}\n[2026-05-07 12:47:09] local.NOTICE: Monitoring start {\"correlation_id\":\"e69f31cd-484b-49bd-859c-623bbbd26af3\",\"trace_id\":\"88997977-10f1-4e2a-83c0-50e571e37a44\"}\n[2026-05-07 12:47:09] local.NOTICE: Monitoring end {\"correlation_id\":\"e69f31cd-484b-49bd-859c-623bbbd26af3\",\"trace_id\":\"88997977-10f1-4e2a-83c0-50e571e37a44\"}\n[2026-05-07 12:47:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2a504138-186d-42e3-96e5-f643d7702e3b\",\"trace_id\":\"870b6098-d6de-4651-ae59-8c1c8cfda87d\"}\n[2026-05-07 12:47:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2a504138-186d-42e3-96e5-f643d7702e3b\",\"trace_id\":\"870b6098-d6de-4651-ae59-8c1c8cfda87d\"}\n[2026-05-07 12:47:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:18] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"7f8facb7-b029-4341-9cae-48f3a8b4a509\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.56,\"average_seconds_per_request\":0.56} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.52,\"average_seconds_per_request\":0.52} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.96,\"average_seconds_per_request\":0.96} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:54] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:54] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:55] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:56] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.88,\"average_seconds_per_request\":0.88} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:56] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:57] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:48:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"49542049-255b-4760-9e23-7d1c900c3134\",\"trace_id\":\"695bcd91-3f91-413c-a7bf-69ebf87e3f41\"}\n[2026-05-07 12:48:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"49542049-255b-4760-9e23-7d1c900c3134\",\"trace_id\":\"695bcd91-3f91-413c-a7bf-69ebf87e3f41\"}\n[2026-05-07 12:48:10] local.NOTICE: Monitoring start {\"correlation_id\":\"12b97eba-1c46-47f7-a568-d18d8378a72b\",\"trace_id\":\"58e93bd6-5c35-400f-8c07-33e8f7b11e6c\"}\n[2026-05-07 12:48:10] local.NOTICE: Monitoring end {\"correlation_id\":\"12b97eba-1c46-47f7-a568-d18d8378a72b\",\"trace_id\":\"58e93bd6-5c35-400f-8c07-33e8f7b11e6c\"}\n[2026-05-07 12:48:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cadb5693-3e48-4249-9df1-fb3cd5740c43\",\"trace_id\":\"c2fc5bd5-c2ed-45f9-98d7-00797a60fc74\"}\n[2026-05-07 12:48:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cadb5693-3e48-4249-9df1-fb3cd5740c43\",\"trace_id\":\"c2fc5bd5-c2ed-45f9-98d7-00797a60fc74\"}\n[2026-05-07 12:48:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:46:00, 2026-05-07 12:48:00] {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:46:00, 2026-05-07 12:48:00] {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42a24f86-9fe5-4049-b43f-95b03556eb29\",\"trace_id\":\"9c2d011e-515d-41ef-ad71-89c6cb137c08\"}\n[2026-05-07 12:48:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42a24f86-9fe5-4049-b43f-95b03556eb29\",\"trace_id\":\"9c2d011e-515d-41ef-ad71-89c6cb137c08\"}\n[2026-05-07 12:48:30] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":35462,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"081d20a5-1e0f-420c-b525-67d92975cd33\",\"trace_id\":\"cb3bc6cc-5381-4b44-ac18-5309da998235\"}\n[2026-05-07 12:49:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"214695a1-4f91-4f63-a72e-f80e44414fb8\",\"trace_id\":\"92b30933-6dae-482c-828a-292088703dc4\"}\n[2026-05-07 12:49:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"214695a1-4f91-4f63-a72e-f80e44414fb8\",\"trace_id\":\"92b30933-6dae-482c-828a-292088703dc4\"}\n[2026-05-07 12:49:08] local.NOTICE: Monitoring start {\"correlation_id\":\"07c7b8b6-3b6a-4c1b-b869-adf33d209dad\",\"trace_id\":\"1b90236f-a2d7-4b8b-b75f-4134f8ea9f41\"}\n[2026-05-07 12:49:08] local.NOTICE: Monitoring end {\"correlation_id\":\"07c7b8b6-3b6a-4c1b-b869-adf33d209dad\",\"trace_id\":\"1b90236f-a2d7-4b8b-b75f-4134f8ea9f41\"}\n[2026-05-07 12:49:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1483e184-cb87-4f34-8628-cdcb5df80ce6\",\"trace_id\":\"6039bf78-dd4a-426f-a737-0a63bed309ee\"}\n[2026-05-07 12:49:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1483e184-cb87-4f34-8628-cdcb5df80ce6\",\"trace_id\":\"6039bf78-dd4a-426f-a737-0a63bed309ee\"}\n[2026-05-07 12:49:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:50:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"99448aa4-3e01-4691-8318-40f126b108aa\",\"trace_id\":\"7de25321-ccda-42fd-a42c-de65a1afac1f\"}\n[2026-05-07 12:50:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"99448aa4-3e01-4691-8318-40f126b108aa\",\"trace_id\":\"7de25321-ccda-42fd-a42c-de65a1afac1f\"}\n[2026-05-07 12:50:07] local.NOTICE: Monitoring start {\"correlation_id\":\"a884ab2b-7113-44a8-8838-090badb02a00\",\"trace_id\":\"f6504680-450b-4f5d-85b9-237c68a5defc\"}\n[2026-05-07 12:50:08] local.NOTICE: Monitoring end {\"correlation_id\":\"a884ab2b-7113-44a8-8838-090badb02a00\",\"trace_id\":\"f6504680-450b-4f5d-85b9-237c68a5defc\"}\n[2026-05-07 12:50:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d43b400e-c8ea-4409-a785-549192fe954e\",\"trace_id\":\"45654d75-0ecf-4994-be61-a6ca00908ed8\"}\n[2026-05-07 12:50:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d43b400e-c8ea-4409-a785-549192fe954e\",\"trace_id\":\"45654d75-0ecf-4994-be61-a6ca00908ed8\"}\n[2026-05-07 12:50:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:48:00, 2026-05-07 12:50:00] {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:48:00, 2026-05-07 12:50:00] {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"76066368-8709-4012-934b-4144d2fbdc9b\",\"trace_id\":\"f2251ef1-25bf-401c-bb01-089b965b41ad\"}\n[2026-05-07 12:50:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"76066368-8709-4012-934b-4144d2fbdc9b\",\"trace_id\":\"f2251ef1-25bf-401c-bb01-089b965b41ad\"}\n[2026-05-07 12:50:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2070d1ee-85ea-473c-8b6a-f9888da9fc66\",\"trace_id\":\"aebc1259-2263-454a-8d25-fe2ee4d279eb\"}\n[2026-05-07 12:50:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2070d1ee-85ea-473c-8b6a-f9888da9fc66\",\"trace_id\":\"aebc1259-2263-454a-8d25-fe2ee4d279eb\"}\n[2026-05-07 12:50:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:20] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:40:00, 2026-05-07 12:45:00] {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:40:00, 2026-05-07 12:45:00] {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:45\",\"to\":\"12:50\"} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:40\",\"to\":\"02:45\"} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:25] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:27] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:27] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1ee4d52c-52d2-4e10-b4e1-23f744d395aa\",\"trace_id\":\"d56b7076-c4b1-4c4e-9091-48a47a52b4a1\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a31ead87-a6dc-4a65-8c18-7ccc322ec1c9\",\"trace_id\":\"9f66a8d0-76d4-4629-98a9-788aa6808022\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a31ead87-a6dc-4a65-8c18-7ccc322ec1c9\",\"trace_id\":\"9f66a8d0-76d4-4629-98a9-788aa6808022\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:52:30.983993Z\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1ee4d52c-52d2-4e10-b4e1-23f744d395aa\",\"trace_id\":\"d56b7076-c4b1-4c4e-9091-48a47a52b4a1\"}\n[2026-05-07 12:50:31] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:31] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a14f2c8a-f723-4ae8-bc96-4511dc99bf20\",\"trace_id\":\"93924334-ad6e-4876-b51e-c1653183dfc6\"}\n[2026-05-07 12:50:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a14f2c8a-f723-4ae8-bc96-4511dc99bf20\",\"trace_id\":\"93924334-ad6e-4876-b51e-c1653183dfc6\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"05046c63-c14e-4a10-a396-2be1be97f054\",\"trace_id\":\"7f64da86-10a0-404a-9787-17d2a4615291\"}\n[2026-05-07 12:50:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"05046c63-c14e-4a10-a396-2be1be97f054\",\"trace_id\":\"7f64da86-10a0-404a-9787-17d2a4615291\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:58] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.54,\"average_seconds_per_request\":0.54} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:58] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.5,\"average_seconds_per_request\":0.5} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:00] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:00] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:01] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:01] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}\n[2026-05-07 12:51:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}\n[2026-05-07 12:51:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}","depth":4,"on_screen":true,"value":"\\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"0a210f2f-6a6e-46de-8954-aa0bddcff83c\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1421,\"provider\":\"office\",\"refreshToken\":\"e63f91c806cda3fadf5eeb79ff8e2bfcc8cd41119a5f8f215ef0b88d0efb9ce6\",\"state\":\"connected\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountObserver] Refresh token was modified, encrypting {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1421,\"provider\":\"office\",\"state\":\"connected\"} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bf6e5e93-d273-4f7d-8999-132c4b0c5914\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"f1e91ce1-43e5-4949-8a6d-a8f09e379006\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:43:32] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"76c9f568-7b13-4c14-878c-fe439b141ce8\",\"trace_id\":\"5d716465-3b3d-4ce7-8cfd-04024215352f\"}\n[2026-05-07 12:44:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733\",\"trace_id\":\"70222427-1438-4fee-a96c-eac56a63e447\"}\n[2026-05-07 12:44:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"02c82719-4b7f-46bc-b6df-15da02e7d1ac\",\"trace_id\":\"984d36dd-d791-493e-89ce-84cdfc3645d6\"}\n[2026-05-07 12:44:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"02c82719-4b7f-46bc-b6df-15da02e7d1ac\",\"trace_id\":\"984d36dd-d791-493e-89ce-84cdfc3645d6\"}\n[2026-05-07 12:44:16] local.NOTICE: Monitoring start {\"correlation_id\":\"37777418-52ab-4b19-b282-1ce5fb875ed8\",\"trace_id\":\"7a8d8508-d8bc-4a24-8100-7be23e473dc5\"}\n[2026-05-07 12:44:16] local.NOTICE: Monitoring end {\"correlation_id\":\"37777418-52ab-4b19-b282-1ce5fb875ed8\",\"trace_id\":\"7a8d8508-d8bc-4a24-8100-7be23e473dc5\"}\n[2026-05-07 12:44:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"221835f1-beb7-4be5-addf-b7557e9d7c4d\",\"trace_id\":\"08e931d6-1301-435a-8520-1c67b17152bb\"}\n[2026-05-07 12:44:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"221835f1-beb7-4be5-addf-b7557e9d7c4d\",\"trace_id\":\"08e931d6-1301-435a-8520-1c67b17152bb\"}\n[2026-05-07 12:44:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4\",\"trace_id\":\"c07f726d-4843-4611-b2ff-3ce5cb59bdf5\"}\n[2026-05-07 12:44:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:31] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:32] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:32] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44dff08f-1d91-4114-9087-7dcaac460d86\",\"trace_id\":\"f9d870ee-97ef-42f7-82ba-52afe2366ca1\"}\n[2026-05-07 12:44:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5df90379-2a6b-469f-8215-67764b135217\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5df90379-2a6b-469f-8215-67764b135217\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"6473c918-d8db-4ded-a52b-4febfd7b7c02\",\"usage\":24921568,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-04-28 06:31:37\"}}} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:35] local.INFO: [SyncObjects] Sync finished {\"team\":\"6473c918-d8db-4ded-a52b-4febfd7b7c02\",\"provider\":\"salesforce\",\"status\":\"disconnected\",\"duration_ms\":36.99,\"usage\":24883008,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"59837440-df16-416f-952e-ca4f5c5b894c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"51467630-d89d-480b-be20-933e64a042f7\",\"usage\":24921656,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:36] local.INFO: [SyncObjects] Sync finished {\"team\":\"51467630-d89d-480b-be20-933e64a042f7\",\"provider\":\"pipedrive\",\"status\":\"disconnected\",\"duration_ms\":36.31,\"usage\":24884512,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"dcc1fb60-a8f0-4b99-bb26-9183948a20b4\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:38] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"396ed57c-e3c4-49be-8290-37c32955f7c7\",\"usage\":24923096,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:38] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"copper\",\"crm_owner\":333,\"team_id\":27} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:39] local.NOTICE: Leads unavailable {\"method\":\"POST\",\"endpoint\":\"leads/search\",\"options\":[],\"body\":{\"minimum_modified_date\":1778156061,\"sort_by\":\"date_modified\",\"page_number\":1},\"status_code\":403,\"error\":\"{\\\"success\\\":false,\\\"status\\\":403,\\\"message\\\":\\\"Feature not enabled\\\"}\"} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {\"team\":\"396ed57c-e3c4-49be-8290-37c32955f7c7\",\"provider\":\"copper\",\"status\":\"completed\",\"duration_ms\":1692.49,\"usage\":24924720,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"e91e5024-b6db-44f6-abc0-b8c4eb0065b9\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"fda3cbdf-1117-4ba5-86f8-775f548b3a28\",\"usage\":25127728,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":28} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {\"team\":\"fda3cbdf-1117-4ba5-86f8-775f548b3a28\",\"provider\":\"pipedrive\",\"status\":\"disconnected\",\"duration_ms\":38.7,\"usage\":25134888,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"3ff5a02a-86fb-4357-b1d6-a04e26c38602\",\"usage\":25173792,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1219,\"provider\":\"close\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1219,\"provider\":\"close\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:42] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"close\",\"crm_owner\":257,\"team_id\":31} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {\"team\":\"3ff5a02a-86fb-4357-b1d6-a04e26c38602\",\"provider\":\"close\",\"status\":\"completed\",\"duration_ms\":2067.19,\"usage\":25267416,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"bbf42f35-d15e-411d-ac0b-a118dd62ddfb\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"1640a0ac-19da-4c3b-90f7-87525f07a6d2\",\"usage\":25246056,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.WARNING: [Bullhorn] Account not connected for user {\"userId\":\"941d12a6-e84f-4c3a-a4c8-2ef433792095\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":348,\"sociable_id\":121,\"provider_user_id\":null,\"expires\":1733727508,\"refresh_token_expires\":null,\"provider\":\"bullhorn\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2021-04-06 11:07:26\",\"updated_at\":\"2024-12-09 15:10:40\"}}} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"bullhorn\",\"crm_owner\":121,\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"bullhorn\",\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"bullhorn\",\"team_id\":36} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {\"team\":\"1640a0ac-19da-4c3b-90f7-87525f07a6d2\",\"provider\":\"bullhorn\",\"status\":\"disconnected\",\"duration_ms\":34.81,\"usage\":25249136,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Bullhorn account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"0c33bf2d-1c77-4200-8ed6-6147ad444c30\",\"usage\":25286952,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"ed89227b-e364-4dfb-b4bf-343f154bf21e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1360,\"sociable_id\":245,\"provider_user_id\":\"0052g000003frZNAAY\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-02 06:11:55\",\"updated_at\":\"2024-12-11 08:50:23\"}}} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":245,\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":59} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:46] local.INFO: [SyncObjects] Sync finished {\"team\":\"0c33bf2d-1c77-4200-8ed6-6147ad444c30\",\"provider\":\"salesforce\",\"status\":\"disconnected\",\"duration_ms\":37.57,\"usage\":25208176,\"real_usage\":65011712,\"pid\":32723,\"reason\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d9856b45-b2cd-484a-9da1-c863ef8d7388\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [SyncObjects] Before memory usage: {\"team\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"usage\":25246656,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [integration-app] Syncing opportunities {\"parameters\":{\"since\":\"2026-05-07 12:14:31\",\"strategy\":\"lastModified\"},\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:48] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-deals/run\",\"full_target\":\"connections/zohocrm/actions/query-deals/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing opportunities finished successfully {\"parameters\":{\"since\":\"2026-05-07 12:14:31\",\"strategy\":\"lastModified\"},\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing accounts {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:49] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-companies/run\",\"full_target\":\"connections/zohocrm/actions/query-companies/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing accounts finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing contacts {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:50] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/query-contacts/run\",\"full_target\":\"connections/zohocrm/actions/query-contacts/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing contacts finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing leads {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"crm_profile_id\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:51] local.INFO: [integration-app] Request {\"request\":\"POST connections/zohocrm/actions/get-converted-leads/run\",\"full_target\":\"connections/zohocrm/actions/get-converted-leads/run\"} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:52] local.INFO: [integration-app] Syncing leads finished successfully {\"since\":\"2026-05-07 12:14:31\",\"to\":null,\"team_id\":3143} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:44:52] local.INFO: [SyncObjects] Sync finished {\"team\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"provider\":\"integration-app\",\"status\":\"completed\",\"duration_ms\":3759.34,\"usage\":25425288,\"real_usage\":65011712,\"pid\":32723} {\"correlation_id\":\"53836b75-cb32-4906-97b1-c78f1962b2e0\",\"trace_id\":\"e89124b2-dfc1-4e27-96a6-3915f683b162\"}\n[2026-05-07 12:45:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b9a62245-1a60-4331-9238-619ccd02ee70\",\"trace_id\":\"415cdabc-248e-44ae-9552-bdbce77b3abd\"}\n[2026-05-07 12:45:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b9dada39-e7c2-4562-b6e3-1be261188b4d\",\"trace_id\":\"6ad37f62-7774-492d-a001-581208f10fff\"}\n[2026-05-07 12:45:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b9dada39-e7c2-4562-b6e3-1be261188b4d\",\"trace_id\":\"6ad37f62-7774-492d-a001-581208f10fff\"}\n[2026-05-07 12:45:22] local.NOTICE: Monitoring start {\"correlation_id\":\"5bffe03c-eea7-43cb-82ba-b7bedd3144cf\",\"trace_id\":\"9f1d5643-8b38-4a14-80b7-70e194f790b6\"}\n[2026-05-07 12:45:22] local.NOTICE: Monitoring end {\"correlation_id\":\"5bffe03c-eea7-43cb-82ba-b7bedd3144cf\",\"trace_id\":\"9f1d5643-8b38-4a14-80b7-70e194f790b6\"}\n[2026-05-07 12:45:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97384b1a-e94d-4830-b6f6-49c02ac78337\",\"trace_id\":\"f14bf171-730f-4e87-aaca-cb102b036424\"}\n[2026-05-07 12:45:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97384b1a-e94d-4830-b6f6-49c02ac78337\",\"trace_id\":\"f14bf171-730f-4e87-aaca-cb102b036424\"}\n[2026-05-07 12:45:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582\",\"trace_id\":\"4a9f39ff-58be-4be9-98ae-78951301893b\"}\n[2026-05-07 12:45:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f\",\"trace_id\":\"2a849c4d-d63f-4329-b30f-f0a2ff9478a6\"}\n[2026-05-07 12:45:42] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f\",\"trace_id\":\"2a849c4d-d63f-4329-b30f-f0a2ff9478a6\"}\n[2026-05-07 12:45:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"da32c044-6ed8-4ca9-aa16-4012f11b3f2a\",\"trace_id\":\"4d49b72a-fa07-4d03-b5bd-14a94a1d7487\"}\n[2026-05-07 12:45:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"da32c044-6ed8-4ca9-aa16-4012f11b3f2a\",\"trace_id\":\"4d49b72a-fa07-4d03-b5bd-14a94a1d7487\"}\n[2026-05-07 12:45:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:48] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"752ddf8d-8be1-4213-aef2-55294dc56a2e\",\"trace_id\":\"b8b830c4-2b05-4687-b087-a61743ecccf3\"}\n[2026-05-07 12:45:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6b15f756-c5eb-4fe9-a658-61ae167e1dcf\",\"trace_id\":\"d22577ed-ce93-48f1-a9fd-977794d67b5f\"}\n[2026-05-07 12:45:52] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:40\",\"to\":\"12:45\"} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:35\",\"to\":\"02:40\"} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:52] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8c9e4ef4-f932-4eb5-843b-769ac13408a7\",\"trace_id\":\"22df39a3-0459-4abe-9a94-ab97aa9ca730\"}\n[2026-05-07 12:45:55] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:57] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:45:57] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"17829351-0c75-4325-acc7-cfb78107adeb\",\"trace_id\":\"929cde96-7160-44b0-9ec3-3f551c3b4477\"}\n[2026-05-07 12:46:01] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"df1f9179-a47d-4442-a7df-98cf14f4e1dc\",\"trace_id\":\"7fb8862b-8dfb-42e4-97bc-65ad622d3274\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:48:01.734581Z\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:01] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"df1f9179-a47d-4442-a7df-98cf14f4e1dc\",\"trace_id\":\"7fb8862b-8dfb-42e4-97bc-65ad622d3274\"}\n[2026-05-07 12:46:02] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812325,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812326,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812327,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812328,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812329,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Dispatching activity sync job {\"import_id\":812330,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b7861d9-35ad-4e56-b5c5-0acc9f052044\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:07] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.ALERT: [SyncActivity] Failed {\"import_id\":812325,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"0c9d7e54-cfbe-4aa4-a0ef-a822be027f50\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:07] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eba7d27-ef66-41b2-9d8b-3625e24eb562\",\"trace_id\":\"274ecb4f-9ec7-4b50-af01-b7934787fd7c\"}\n[2026-05-07 12:46:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eba7d27-ef66-41b2-9d8b-3625e24eb562\",\"trace_id\":\"274ecb4f-9ec7-4b50-af01-b7934787fd7c\"}\n[2026-05-07 12:46:08] local.ALERT: [SyncActivity] Failed {\"import_id\":812326,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"0e32baf2-a871-493b-a196-253f95256783\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.ALERT: [SyncActivity] Failed {\"import_id\":812327,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"b9a5c195-0016-406b-be7e-93c6268acc7b\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:08] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.ALERT: [SyncActivity] Failed {\"import_id\":812328,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"70879c42-cda6-487b-88e3-cfdc3cbf65b3\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.ALERT: [SyncActivity] Failed {\"import_id\":812329,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"aa424cce-f1f4-41af-a90a-218d2b5da8f7\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:09] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":408,\"provider\":\"hubspot\",\"refreshToken\":\"de4e47eb985578f4218833e763e31059e88b562e87e10749b3389be2328f0aa7\",\"state\":\"connected\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5048e6cf-9673-44b5-abbc-6bf8dd357cd0\",\"trace_id\":\"7cb59ad0-c86f-429a-9b57-ad0a8e45965a\"}\n[2026-05-07 12:46:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5048e6cf-9673-44b5-abbc-6bf8dd357cd0\",\"trace_id\":\"7cb59ad0-c86f-429a-9b57-ad0a8e45965a\"}\n[2026-05-07 12:46:10] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":408,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [SyncActivity] Start {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:10] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:29:00\",\"to\":\"2026-05-07 12:45:00\"} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:11] local.INFO: [SyncActivity] End {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:11] local.INFO: [SyncActivity] Memory usage {\"import_id\":812330,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27584720,\"memory_real_usage\":67108864,\"pid\":32727} {\"correlation_id\":\"64033c39-9a96-4d0f-ac30-7b81501ce683\",\"trace_id\":\"9ec7a7b3-8ea9-48aa-a3cf-874ed3282b51\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e9df12b1-bc7a-4664-8b48-5906371b72c5\",\"trace_id\":\"85562695-238b-447f-b6a3-e971b166c4df\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:27] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":187.9,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:46:57] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"8dd8fe1b-0dee-4d05-a704-30389afb3291\",\"trace_id\":\"1f7be82b-1992-43d4-9a48-433613bc7f44\"}\n[2026-05-07 12:47:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"498b2d5d-7b2f-45aa-b031-606e1040c8c4\",\"trace_id\":\"716e1e24-c5d7-44e8-b688-3b3bffcd438e\"}\n[2026-05-07 12:47:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"be201f4f-734a-4724-8a08-645e6c42815a\",\"trace_id\":\"cb290f49-fb41-4755-8585-b3c209e25795\"}\n[2026-05-07 12:47:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"be201f4f-734a-4724-8a08-645e6c42815a\",\"trace_id\":\"cb290f49-fb41-4755-8585-b3c209e25795\"}\n[2026-05-07 12:47:09] local.NOTICE: Monitoring start {\"correlation_id\":\"e69f31cd-484b-49bd-859c-623bbbd26af3\",\"trace_id\":\"88997977-10f1-4e2a-83c0-50e571e37a44\"}\n[2026-05-07 12:47:09] local.NOTICE: Monitoring end {\"correlation_id\":\"e69f31cd-484b-49bd-859c-623bbbd26af3\",\"trace_id\":\"88997977-10f1-4e2a-83c0-50e571e37a44\"}\n[2026-05-07 12:47:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2a504138-186d-42e3-96e5-f643d7702e3b\",\"trace_id\":\"870b6098-d6de-4651-ae59-8c1c8cfda87d\"}\n[2026-05-07 12:47:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2a504138-186d-42e3-96e5-f643d7702e3b\",\"trace_id\":\"870b6098-d6de-4651-ae59-8c1c8cfda87d\"}\n[2026-05-07 12:47:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b75031b3-9867-4e31-995c-ea08849689a0\",\"trace_id\":\"5294ea71-2395-44cb-9a6e-b745c5c09e8b\"}\n[2026-05-07 12:47:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d87fa2b4-ab9c-4016-8f88-273a0df9aa70\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:18] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"7f8facb7-b029-4341-9cae-48f3a8b4a509\",\"trace_id\":\"75a16e1a-caa8-4d61-883a-6a30dc5e0523\"}\n[2026-05-07 12:47:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:51] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.56,\"average_seconds_per_request\":0.56} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.52,\"average_seconds_per_request\":0.52} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.96,\"average_seconds_per_request\":0.96} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:54] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:54] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:55] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:56] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.88,\"average_seconds_per_request\":0.88} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:56] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:47:57] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"58070d93-2c01-4f3e-b3ce-bc52cd502428\",\"trace_id\":\"bb9f6bc3-51f8-4acd-93d7-da5e722d6e43\"}\n[2026-05-07 12:48:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73fb8f92-2676-4d8e-b3a3-94a05ea69796\",\"trace_id\":\"d5aade53-384f-4a8a-b9b2-dbe46ef99c4d\"}\n[2026-05-07 12:48:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"49542049-255b-4760-9e23-7d1c900c3134\",\"trace_id\":\"695bcd91-3f91-413c-a7bf-69ebf87e3f41\"}\n[2026-05-07 12:48:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"49542049-255b-4760-9e23-7d1c900c3134\",\"trace_id\":\"695bcd91-3f91-413c-a7bf-69ebf87e3f41\"}\n[2026-05-07 12:48:10] local.NOTICE: Monitoring start {\"correlation_id\":\"12b97eba-1c46-47f7-a568-d18d8378a72b\",\"trace_id\":\"58e93bd6-5c35-400f-8c07-33e8f7b11e6c\"}\n[2026-05-07 12:48:10] local.NOTICE: Monitoring end {\"correlation_id\":\"12b97eba-1c46-47f7-a568-d18d8378a72b\",\"trace_id\":\"58e93bd6-5c35-400f-8c07-33e8f7b11e6c\"}\n[2026-05-07 12:48:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cadb5693-3e48-4249-9df1-fb3cd5740c43\",\"trace_id\":\"c2fc5bd5-c2ed-45f9-98d7-00797a60fc74\"}\n[2026-05-07 12:48:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cadb5693-3e48-4249-9df1-fb3cd5740c43\",\"trace_id\":\"c2fc5bd5-c2ed-45f9-98d7-00797a60fc74\"}\n[2026-05-07 12:48:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"92952212-1af2-4e9a-ac5b-a2f0bbf35db9\",\"trace_id\":\"bf671706-7811-45e2-8971-b9d12826e46a\"}\n[2026-05-07 12:48:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:46:00, 2026-05-07 12:48:00] {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:46:00, 2026-05-07 12:48:00] {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f49ee48a-5aee-41a7-b3db-081d8430f611\",\"trace_id\":\"772fba79-6862-47dd-bb4f-68a31a441fb6\"}\n[2026-05-07 12:48:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42a24f86-9fe5-4049-b43f-95b03556eb29\",\"trace_id\":\"9c2d011e-515d-41ef-ad71-89c6cb137c08\"}\n[2026-05-07 12:48:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42a24f86-9fe5-4049-b43f-95b03556eb29\",\"trace_id\":\"9c2d011e-515d-41ef-ad71-89c6cb137c08\"}\n[2026-05-07 12:48:30] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":35462,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"081d20a5-1e0f-420c-b525-67d92975cd33\",\"trace_id\":\"cb3bc6cc-5381-4b44-ac18-5309da998235\"}\n[2026-05-07 12:49:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"25f67db9-62c3-408e-9e83-383828eec23b\",\"trace_id\":\"0f662821-6920-4adc-80e4-478ca83e636d\"}\n[2026-05-07 12:49:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"214695a1-4f91-4f63-a72e-f80e44414fb8\",\"trace_id\":\"92b30933-6dae-482c-828a-292088703dc4\"}\n[2026-05-07 12:49:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"214695a1-4f91-4f63-a72e-f80e44414fb8\",\"trace_id\":\"92b30933-6dae-482c-828a-292088703dc4\"}\n[2026-05-07 12:49:08] local.NOTICE: Monitoring start {\"correlation_id\":\"07c7b8b6-3b6a-4c1b-b869-adf33d209dad\",\"trace_id\":\"1b90236f-a2d7-4b8b-b75f-4134f8ea9f41\"}\n[2026-05-07 12:49:08] local.NOTICE: Monitoring end {\"correlation_id\":\"07c7b8b6-3b6a-4c1b-b869-adf33d209dad\",\"trace_id\":\"1b90236f-a2d7-4b8b-b75f-4134f8ea9f41\"}\n[2026-05-07 12:49:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1483e184-cb87-4f34-8628-cdcb5df80ce6\",\"trace_id\":\"6039bf78-dd4a-426f-a737-0a63bed309ee\"}\n[2026-05-07 12:49:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1483e184-cb87-4f34-8628-cdcb5df80ce6\",\"trace_id\":\"6039bf78-dd4a-426f-a737-0a63bed309ee\"}\n[2026-05-07 12:49:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:49:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"df5525be-0210-4f40-abf4-865b16e8f12c\",\"trace_id\":\"1cfb271a-383d-46fe-b94c-80adc748c3dd\"}\n[2026-05-07 12:50:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ce106f33-ddc7-4fbc-9f90-e57c59f602d0\",\"trace_id\":\"03012ef9-9dcb-4e65-be5a-4ec5a43ec782\"}\n[2026-05-07 12:50:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"99448aa4-3e01-4691-8318-40f126b108aa\",\"trace_id\":\"7de25321-ccda-42fd-a42c-de65a1afac1f\"}\n[2026-05-07 12:50:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"99448aa4-3e01-4691-8318-40f126b108aa\",\"trace_id\":\"7de25321-ccda-42fd-a42c-de65a1afac1f\"}\n[2026-05-07 12:50:07] local.NOTICE: Monitoring start {\"correlation_id\":\"a884ab2b-7113-44a8-8838-090badb02a00\",\"trace_id\":\"f6504680-450b-4f5d-85b9-237c68a5defc\"}\n[2026-05-07 12:50:08] local.NOTICE: Monitoring end {\"correlation_id\":\"a884ab2b-7113-44a8-8838-090badb02a00\",\"trace_id\":\"f6504680-450b-4f5d-85b9-237c68a5defc\"}\n[2026-05-07 12:50:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d43b400e-c8ea-4409-a785-549192fe954e\",\"trace_id\":\"45654d75-0ecf-4994-be61-a6ca00908ed8\"}\n[2026-05-07 12:50:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d43b400e-c8ea-4409-a785-549192fe954e\",\"trace_id\":\"45654d75-0ecf-4994-be61-a6ca00908ed8\"}\n[2026-05-07 12:50:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f1a27622-95c2-472f-aff1-bd59de876342\",\"trace_id\":\"f58c459f-5d0b-495f-a54b-83701c990017\"}\n[2026-05-07 12:50:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:48:00, 2026-05-07 12:50:00] {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:48:00, 2026-05-07 12:50:00] {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"48788bde-d941-43ec-a4e5-6d19bc76d952\",\"trace_id\":\"7dbfa7c2-cf03-4172-ba24-99b84303d25e\"}\n[2026-05-07 12:50:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"76066368-8709-4012-934b-4144d2fbdc9b\",\"trace_id\":\"f2251ef1-25bf-401c-bb01-089b965b41ad\"}\n[2026-05-07 12:50:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"76066368-8709-4012-934b-4144d2fbdc9b\",\"trace_id\":\"f2251ef1-25bf-401c-bb01-089b965b41ad\"}\n[2026-05-07 12:50:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2070d1ee-85ea-473c-8b6a-f9888da9fc66\",\"trace_id\":\"aebc1259-2263-454a-8d25-fe2ee4d279eb\"}\n[2026-05-07 12:50:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2070d1ee-85ea-473c-8b6a-f9888da9fc66\",\"trace_id\":\"aebc1259-2263-454a-8d25-fe2ee4d279eb\"}\n[2026-05-07 12:50:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:20] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"433b6d48-d481-434a-9c9f-cad6f79e6136\",\"trace_id\":\"029bda9d-79e9-4e61-8c06-d96ed71f2f8e\"}\n[2026-05-07 12:50:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:40:00, 2026-05-07 12:45:00] {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:40:00, 2026-05-07 12:45:00] {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"624591ab-b2bb-4613-bc71-14ecec6f862a\",\"trace_id\":\"414d1ecf-2ec8-49ca-ac07-813a00725249\"}\n[2026-05-07 12:50:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:45\",\"to\":\"12:50\"} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:40\",\"to\":\"02:45\"} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b6086580-0f94-40fd-8d0a-587488369734\",\"trace_id\":\"e3531e31-bccc-4851-b756-1b8fdc1813b6\"}\n[2026-05-07 12:50:25] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:25] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:26] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:27] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:27] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"73769cd8-6369-4357-a08d-26c6c49a22b4\",\"trace_id\":\"1d3dc998-55b4-42b8-8b76-248a2f803707\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1ee4d52c-52d2-4e10-b4e1-23f744d395aa\",\"trace_id\":\"d56b7076-c4b1-4c4e-9091-48a47a52b4a1\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a31ead87-a6dc-4a65-8c18-7ccc322ec1c9\",\"trace_id\":\"9f66a8d0-76d4-4629-98a9-788aa6808022\"}\n[2026-05-07 12:50:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a31ead87-a6dc-4a65-8c18-7ccc322ec1c9\",\"trace_id\":\"9f66a8d0-76d4-4629-98a9-788aa6808022\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:52:30.983993Z\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:30] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1ee4d52c-52d2-4e10-b4e1-23f744d395aa\",\"trace_id\":\"d56b7076-c4b1-4c4e-9091-48a47a52b4a1\"}\n[2026-05-07 12:50:31] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:31] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a14f2c8a-f723-4ae8-bc96-4511dc99bf20\",\"trace_id\":\"93924334-ad6e-4876-b51e-c1653183dfc6\"}\n[2026-05-07 12:50:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a14f2c8a-f723-4ae8-bc96-4511dc99bf20\",\"trace_id\":\"93924334-ad6e-4876-b51e-c1653183dfc6\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:36] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"05046c63-c14e-4a10-a396-2be1be97f054\",\"trace_id\":\"7f64da86-10a0-404a-9787-17d2a4615291\"}\n[2026-05-07 12:50:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"05046c63-c14e-4a10-a396-2be1be97f054\",\"trace_id\":\"7f64da86-10a0-404a-9787-17d2a4615291\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:42] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"9c196be0-138c-4085-9f0c-32c70ce591fb\",\"trace_id\":\"fd4e96c5-06d4-43f0-be39-0cc8e5a8e238\"}\n[2026-05-07 12:50:57] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:58] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.54,\"average_seconds_per_request\":0.54} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:58] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.5,\"average_seconds_per_request\":0.5} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:50:59] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:00] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:00] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:01] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:01] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"03d55104-fb09-4f4b-8914-89e985071ab1\",\"trace_id\":\"34cb665d-1fcb-460e-a935-fde92b30d371\"}\n[2026-05-07 12:51:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}\n[2026-05-07 12:51:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}\n[2026-05-07 12:51:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0f240f-43c5-4887-ab10-0df27977958e\",\"trace_id\":\"af7b1f0a-2f13-48ed-8ed1-f025e3f54371\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchByName('Robot');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchByName('Robot');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
765832100872978505
|
6225503898155390349
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Search History
Hubspot
New Line
Replace History
Replace
New Line
Previous Occurrence
Next Occurrence
Search All
Search Backward
Search Forward
Match сase
Words
Regex
?
Close
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"0a210f2f-6a6e-46de-8954-aa0bddcff83c","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1351,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1351,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:29] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1351,"provider":"google","refreshToken":"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c","state":"full-refresh"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1351,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1351,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1366,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1366,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1366,"provider":"google","refreshToken":"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4","state":"full-refresh"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1366,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1366,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: Calendar sync job dispatched {"calendar_id":378} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1421,"provider":"office"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1421,"provider":"office"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1421,"provider":"office","refreshToken":"e63f91c806cda3fadf5eeb79ff8e2bfcc8cd41119a5f8f215ef0b88d0efb9ce6","state":"connected"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:31] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","from":null,"to":null,"delta":"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=","last_sync":"2026-01-19 07:48:40","dateMode":"daily"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountObserver] Refresh token was modified, encrypting {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {"provider":"pipedrive","user_id":241,"message":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1115,"provider":"google"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1421,"provider":"office","state":"connected"} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: Calendar sync job dispatched {"calendar_id":504} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.NOTICE: Calendar sync end {"retrieved_calendars":31,"processed_calendars":3} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"calendar:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bf6e5e93-d273-4f7d-8999-132c4b0c5914","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Google Calendar] Failed to watch channel for calendar {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.WARNING: [Calendar] Sync failed {"calendarId":"2676cb6d-f86c-427e-bf78-591e388e3c1e","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"f1e91ce1-43e5-4949-8a6d-a8f09e379006","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1421,"provider":"office"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1421,"provider":"office"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [Calendar] Processing sync {"calendarId":"9e8b1a2c-1a8f-42bd-b161-810fc0baf540","from":null,"to":null,"delta":"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ","last_sync":"2026-05-06 15:58:35","dateMode":"daily"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":89,"team_id":2} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:43:32] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {"calendarId":"9e8b1a2c-1a8f-42bd-b161-810fc0baf540"} {"correlation_id":"76c9f568-7b13-4c14-878c-fe439b141ce8","trace_id":"5d716465-3b3d-4ce7-8cfd-04024215352f"}
[2026-05-07 12:44:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b44e5fc2-e6b0-4edc-b43a-dfe1c8bdd733","trace_id":"70222427-1438-4fee-a96c-eac56a63e447"}
[2026-05-07 12:44:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"02c82719-4b7f-46bc-b6df-15da02e7d1ac","trace_id":"984d36dd-d791-493e-89ce-84cdfc3645d6"}
[2026-05-07 12:44:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"02c82719-4b7f-46bc-b6df-15da02e7d1ac","trace_id":"984d36dd-d791-493e-89ce-84cdfc3645d6"}
[2026-05-07 12:44:16] local.NOTICE: Monitoring start {"correlation_id":"37777418-52ab-4b19-b282-1ce5fb875ed8","trace_id":"7a8d8508-d8bc-4a24-8100-7be23e473dc5"}
[2026-05-07 12:44:16] local.NOTICE: Monitoring end {"correlation_id":"37777418-52ab-4b19-b282-1ce5fb875ed8","trace_id":"7a8d8508-d8bc-4a24-8100-7be23e473dc5"}
[2026-05-07 12:44:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"221835f1-beb7-4be5-addf-b7557e9d7c4d","trace_id":"08e931d6-1301-435a-8520-1c67b17152bb"}
[2026-05-07 12:44:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"221835f1-beb7-4be5-addf-b7557e9d7c4d","trace_id":"08e931d6-1301-435a-8520-1c67b17152bb"}
[2026-05-07 12:44:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e8bda8a8-4b7b-460d-b119-d964bd1ea8f4","trace_id":"c07f726d-4843-4611-b2ff-3ce5cb59bdf5"}
[2026-05-07 12:44:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:31] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:32] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:42:00, 2026-05-07 12:44:00] {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"44dff08f-1d91-4114-9087-7dcaac460d86","trace_id":"f9d870ee-97ef-42f7-82ba-52afe2366ca1"}
[2026-05-07 12:44:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5df90379-2a6b-469f-8215-67764b135217","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5df90379-2a6b-469f-8215-67764b135217","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [SyncObjects] Before memory usage: {"team":"6473c918-d8db-4ded-a52b-4febfd7b7c02","usage":24921568,"real_usage":65011712,"pid":32723} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-28 06:31:37"}}} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:35] local.INFO: [SyncObjects] Sync finished {"team":"6473c918-d8db-4ded-a52b-4febfd7b7c02","provider":"salesforce","status":"disconnected","duration_ms":36.99,"usage":24883008,"real_usage":65011712,"pid":32723,"reason":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"59837440-df16-416f-952e-ca4f5c5b894c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [SyncObjects] Before memory usage: {"team":"51467630-d89d-480b-be20-933e64a042f7","usage":24921656,"real_usage":65011712,"pid":32723} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":19} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:36] local.INFO: [SyncObjects] Sync finished {"team":"51467630-d89d-480b-be20-933e64a042f7","provider":"pipedrive","status":"disconnected","duration_ms":36.31,"usage":24884512,"real_usage":65011712,"pid":32723,"reason":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"dcc1fb60-a8f0-4b99-bb26-9183948a20b4","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:38] local.INFO: [SyncObjects] Before memory usage: {"team":"396ed57c-e3c4-49be-8290-37c32955f7c7","usage":24923096,"real_usage":65011712,"pid":32723} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:38] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"copper","crm_owner":333,"team_id":27} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:39] local.NOTICE: Leads unavailable {"method":"POST","endpoint":"leads/search","options":[],"body":{"minimum_modified_date":1778156061,"sort_by":"date_modified","page_number":1},"status_code":403,"error":"{\"success\":false,\"status\":403,\"message\":\"Feature not enabled\"}"} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {"team":"396ed57c-e3c4-49be-8290-37c32955f7c7","provider":"copper","status":"completed","duration_ms":1692.49,"usage":24924720,"real_usage":65011712,"pid":32723} {"correlation_id":"e91e5024-b6db-44f6-abc0-b8c4eb0065b9","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Before memory usage: {"team":"fda3cbdf-1117-4ba5-86f8-775f548b3a28","usage":25127728,"real_usage":65011712,"pid":32723} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.WARNING: [Pipedrive] Account not connected for user {"userId":"e6538737-e7b4-455f-a37a-3e79b665a220","account":{"Jiminny\\Models\\SocialAccount":{"id":1116,"sociable_id":241,"provider_user_id":"19555731","expires":1775683749,"refresh_token_expires":null,"provider":"pipedrive","state":"full-refresh","auth_scope":"base,deals:full,activities:full,contacts:full,search:read","retry_after":null,"created_at":"2023-09-08 09:44:29","updated_at":"2026-04-08 22:58:34"}}} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"pipedrive","crm_owner":241,"team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"pipedrive","team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"pipedrive","team_id":28} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:40] local.INFO: [SyncObjects] Sync finished {"team":"fda3cbdf-1117-4ba5-86f8-775f548b3a28","provider":"pipedrive","status":"disconnected","duration_ms":38.7,"usage":25134888,"real_usage":65011712,"pid":32723,"reason":"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"b7ad8ec6-1266-4f91-bcdd-55c98a76c83c","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SyncObjects] Before memory usage: {"team":"3ff5a02a-86fb-4357-b1d6-a04e26c38602","usage":25173792,"real_usage":65011712,"pid":32723} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1219,"provider":"close"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1219,"provider":"close"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:42] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"close","crm_owner":257,"team_id":31} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {"team":"3ff5a02a-86fb-4357-b1d6-a04e26c38602","provider":"close","status":"completed","duration_ms":2067.19,"usage":25267416,"real_usage":65011712,"pid":32723} {"correlation_id":"bbf42f35-d15e-411d-ac0b-a118dd62ddfb","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Before memory usage: {"team":"1640a0ac-19da-4c3b-90f7-87525f07a6d2","usage":25246056,"real_usage":65011712,"pid":32723} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.WARNING: [Bullhorn] Account not connected for user {"userId":"941d12a6-e84f-4c3a-a4c8-2ef433792095","account":{"Jiminny\\Models\\SocialAccount":{"id":348,"sociable_id":121,"provider_user_id":null,"expires":1733727508,"refresh_token_expires":null,"provider":"bullhorn","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2021-04-06 11:07:26","updated_at":"2024-12-09 15:10:40"}}} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"bullhorn","crm_owner":121,"team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"bullhorn","team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"bullhorn","team_id":36} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:44] local.INFO: [SyncObjects] Sync finished {"team":"1640a0ac-19da-4c3b-90f7-87525f07a6d2","provider":"bullhorn","status":"disconnected","duration_ms":34.81,"usage":25249136,"real_usage":65011712,"pid":32723,"reason":"Your Bullhorn account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d6df3bc4-1ad7-4561-9335-d6ed14bdd12b","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [SyncObjects] Before memory usage: {"team":"0c33bf2d-1c77-4200-8ed6-6147ad444c30","usage":25286952,"real_usage":65011712,"pid":32723} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.WARNING: [Salesforce] Account not connected for user {"userId":"ed89227b-e364-4dfb-b4bf-343f154bf21e","account":{"Jiminny\\Models\\SocialAccount":{"id":1360,"sociable_id":245,"provider_user_id":"0052g000003frZNAAY","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-02 06:11:55","updated_at":"2024-12-11 08:50:23"}}} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":245,"team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":59} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:46] local.INFO: [SyncObjects] Sync finished {"team":"0c33bf2d-1c77-4200-8ed6-6147ad444c30","provider":"salesforce","status":"disconnected","duration_ms":37.57,"usage":25208176,"real_usage":65011712,"pid":32723,"reason":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d9856b45-b2cd-484a-9da1-c863ef8d7388","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [SyncObjects] Before memory usage: {"team":"1ece66c8-feb1-4df1-b321-21607daf4623","usage":25246656,"real_usage":65011712,"pid":32723} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"integration-app","crm_owner":1695,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [integration-app] Syncing opportunities {"parameters":{"since":"2026-05-07 12:14:31","strategy":"lastModified"},"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:48] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-deals/run","full_target":"connections/zohocrm/actions/query-deals/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing opportunities finished successfully {"parameters":{"since":"2026-05-07 12:14:31","strategy":"lastModified"},"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Syncing accounts {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:49] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-companies/run","full_target":"connections/zohocrm/actions/query-companies/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing accounts finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Syncing contacts {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:50] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/query-contacts/run","full_target":"connections/zohocrm/actions/query-contacts/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing contacts finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Syncing leads {"since":"2026-05-07 12:14:31","to":null,"crm_profile_id":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:51] local.INFO: [integration-app] Request {"request":"POST connections/zohocrm/actions/get-converted-leads/run","full_target":"connections/zohocrm/actions/get-converted-leads/run"} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:52] local.INFO: [integration-app] Syncing leads finished successfully {"since":"2026-05-07 12:14:31","to":null,"team_id":3143} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:44:52] local.INFO: [SyncObjects] Sync finished {"team":"1ece66c8-feb1-4df1-b321-21607daf4623","provider":"integration-app","status":"completed","duration_ms":3759.34,"usage":25425288,"real_usage":65011712,"pid":32723} {"correlation_id":"53836b75-cb32-4906-97b1-c78f1962b2e0","trace_id":"e89124b2-dfc1-4e27-96a6-3915f683b162"}
[2026-05-07 12:45:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b9a62245-1a60-4331-9238-619ccd02ee70","trace_id":"415cdabc-248e-44ae-9552-bdbce77b3abd"}
[2026-05-07 12:45:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b9dada39-e7c2-4562-b6e3-1be261188b4d","trace_id":"6ad37f62-7774-492d-a001-581208f10fff"}
[2026-05-07 12:45:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b9dada39-e7c2-4562-b6e3-1be261188b4d","trace_id":"6ad37f62-7774-492d-a001-581208f10fff"}
[2026-05-07 12:45:22] local.NOTICE: Monitoring start {"correlation_id":"5bffe03c-eea7-43cb-82ba-b7bedd3144cf","trace_id":"9f1d5643-8b38-4a14-80b7-70e194f790b6"}
[2026-05-07 12:45:22] local.NOTICE: Monitoring end {"correlation_id":"5bffe03c-eea7-43cb-82ba-b7bedd3144cf","trace_id":"9f1d5643-8b38-4a14-80b7-70e194f790b6"}
[2026-05-07 12:45:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97384b1a-e94d-4830-b6f6-49c02ac78337","trace_id":"f14bf171-730f-4e87-aaca-cb102b036424"}
[2026-05-07 12:45:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97384b1a-e94d-4830-b6f6-49c02ac78337","trace_id":"f14bf171-730f-4e87-aaca-cb102b036424"}
[2026-05-07 12:45:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"91b7ffb7-6f73-4b35-9ce2-6caa2f10e582","trace_id":"4a9f39ff-58be-4be9-98ae-78951301893b"}
[2026-05-07 12:45:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f","trace_id":"2a849c4d-d63f-4329-b30f-f0a2ff9478a6"}
[2026-05-07 12:45:42] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dd7e2285-41ce-4dd1-8d99-e9ba2db9b30f","trace_id":"2a849c4d-d63f-4329-b30f-f0a2ff9478a6"}
[2026-05-07 12:45:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"da32c044-6ed8-4ca9-aa16-4012f11b3f2a","trace_id":"4d49b72a-fa07-4d03-b5bd-14a94a1d7487"}
[2026-05-07 12:45:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"da32c044-6ed8-4ca9-aa16-4012f11b3f2a","trace_id":"4d49b72a-fa07-4d03-b5bd-14a94a1d7487"}
[2026-05-07 12:45:48] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:48] local.INFO: Running pre-meeting notification command {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:48] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"752ddf8d-8be1-4213-aef2-55294dc56a2e","trace_id":"b8b830c4-2b05-4687-b087-a61743ecccf3"}
[2026-05-07 12:45:50] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:35:00, 2026-05-07 12:40:00] {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:50] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6b15f756-c5eb-4fe9-a658-61ae167e1dcf","trace_id":"d22577ed-ce93-48f1-a9fd-977794d67b5f"}
[2026-05-07 12:45:52] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:40","to":"12:45"} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:35","to":"02:40"} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:52] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8c9e4ef4-f932-4eb5-843b-769ac13408a7","trace_id":"22df39a3-0459-4abe-9a94-ab97aa9ca730"}
[2026-05-07 12:45:55] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:55] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:56] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:57] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:45:57] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"17829351-0c75-4325-acc7-cfb78107adeb","trace_id":"929cde96-7160-44b0-9ec3-3f551c3b4477"}
[2026-05-07 12:46:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeComm...
|
3925
|
NULL
|
NULL
|
NULL
|
|
3932
|
141
|
1
|
2026-05-07T12:51:25.080542+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158285080_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(wbl# Lukas/Stefka 121 • in 1h 39 m100% <478DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)jiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:j1minny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matching contact 2Matching contactMatchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:51:24T₴1₴6DEV...
|
NULL
|
1760142792296139365
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(wbl# Lukas/Stefka 121 • in 1h 39 m100% <478DEV (docker)DOCKERO ₴1DEV (docker)882APP (-zsh)jiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:j1minny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matching contact 2Matching contactMatchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:51:24T₴1₴6DEV...
|
3927
|
NULL
|
NULL
|
NULL
|
|
3996
|
143
|
1
|
2026-05-07T12:56:26.972882+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158586972_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpLukas/Stefka 121 - in 1h 34 m100% <478DEV (docker)*3-zshDOCKERDEV (docker)H82APP (-zsh)worker:worker_00:startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny#php artisan jiminny: debugMatchingcontact 0Matchingcontact 1Matchingcontact 2Matchingcontact3Matchingcontact4Matchingcontact5Matching contact 6Matchingcontact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart allINFOClearing cached bootstrap files.configcachecompiledeventsroutesviews• 84screenpipe*•$5-zshThu 7 May 15:56:26T81₴6DEV6.01ms DONE16.11ms DONE2.91ms DONE2.27ms DONE3.11ms DONE18.41ms DONE...
|
NULL
|
-7740704058518218087
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpLukas/Stefka 121 - in 1h 34 m100% <478DEV (docker)*3-zshDOCKERDEV (docker)H82APP (-zsh)worker:worker_00:startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny#php artisan jiminny: debugMatchingcontact 0Matchingcontact 1Matchingcontact 2Matchingcontact3Matchingcontact4Matchingcontact5Matching contact 6Matchingcontact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatching contact 0Matching contact 1Matchingcontact 2Matchingcontact 3Matching contact 4Matching contact 5Matching contact6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart allINFOClearing cached bootstrap files.configcachecompiledeventsroutesviews• 84screenpipe*•$5-zshThu 7 May 15:56:26T81₴6DEV6.01ms DONE16.11ms DONE2.91ms DONE2.27ms DONE3.11ms DONE18.41ms DONE...
|
3995
|
NULL
|
NULL
|
NULL
|
|
3997
|
144
|
1
|
2026-05-07T12:56:29.865187+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158589865_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
• (S)melpProiect vRematchActivityOnCrmObjectDetach • (S)melpProiect vRematchActivityOnCrmObjectDetach.phpT DeleteC© HubspotWebhocc) PaginationContig.onp© JiminnyDebugCommand.phpv D Pagination© HubspotPaginat© PaginationConfis T ImportBatchJobTrait.phpC) Paginationstate.u Hubspot//syncermenuuestrait.ono•_ Prospectsearchstr> 0 Redisclass HubspotPaq1nat1onServicev D ServiceTraits+Opportunitvsyn+ SyncermEntitiesT.WriteCrmtrait.p•DUts•WeonookC) BatchSvncCollectotC) BatchSvncRedisSe© Client.php© ClosedDealStagessG DealFieldsService.p© DecorateActivity.ph© FieldDefinitions.phpC) SieldTvneConverte0 HubsnotClientinter© HubspotTokenMan© PayloadBuilder.phpe DomotoCrmOhiontl• ResponseNormalize(e) Service.pnp© SyncFieldAction.ph© SyncRelatedActivitsc) WebhooksyncBatcv C IntegrationApp>_ Accessors›D ADI• contio> MDTO•D Filters•Hlobs• ProspectSearchStr.v ServiceTraitstSyternalManstirt InternalAccount? LavoutTrait nhnT. NotSunnortedTr. SvncCrmEntitiec?. SvncCrmSieldsTT CuneCrmMotad.T SystemStateTra© DataClient.php© DecorateActivity.ph13 usagespublic tunction getPaqlnateddatabenMulent scllent.array Soavloadhstrina Stvoelsint Soffset = 01int &$total = 0Ostrina &SlastRecordid = nuul): \Generator 1Sstate = new PaginationStateiofSendpoint = Client::BASE_URLSdofaul+Cilten = Snavloadrifi1tSresultsPerPage = PayloadBuildeSteamid = Sclient->ae+Confiao.Sdelav = Sthis->calculatelelavtdo{if ($this->shouldStopPag:hnosk.Spayload = sthis->handlepadusLeensdelav):Spage = Sthis->executeSeardSstate->setTotalspagel'tSthis->updateLastRecordIdII Safely iterate oven neSresults = Snadel'resultefonpach (Sresults as SrouSstate->incnementTot.yield $rowCctato-scothffcot/cthic.sCctato-sinenementPoauoctdSthis->loqPaginationProg} while (Sstate->offset && ! enI| Log final pagination complet• SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationv COLLECtIONS> CRM Owners> CRM Pipelines› Dealsengagements>D OLD ENGAGEMENTSuer list meetingsGET read callPost coarch calleGET ist callsPOST meetings scheduledGET det meetinoPOST get link to task>POST Create Contact with Association> Hubspotlteration run HSv GET Read Copyeg. An error occurred.se. successful operationv lteration run Search HSpost search contact oy emall copy> Journal & webhoooks v4> ©Auth› Properties> RESCAPCHSEARCHIpost search contact by phonePOST search contact by emailpost coarch meetinas> Post Search callc vaPOST Search related meetinas v3Post coarch deals> Ticketsv Uicofull› PosT filter oer comoanv / oniv onen deal stagesGet engagements old associated by dealGET engagements old associated by comoanvSustem Resource Warningsystem mav not be able to generate the loadeded for this test and the cest is likely to§ Connect Git E Console E TerminaGET Rea( •GET readGET Get ErGET Read Cou Iteration run Search HS • 20 VUs • May 07, 2026 15:52:11 (1 min) • Fixed profileSummaryTotal requests sent ©Requests/second ©.Ava, response time ©P90 ©P95 ©P996,980115.95153 ms16 ms198 ms308 ms% 100Mav 07 2026 15-52-21 - 15-52•25Avg. response147.062 ms20 VU18552.1415:52:2115:52:42Performance details for total durationTotal reauestseReauestelsFrror %Failure %POST search contact by email Copy115 60ad0lIterationPOST searc • POST searchError % @0.00Failure % ©0.00"Lukas sterka 121 • In 1h 34mIterationNo environmentSharePeak CPU %©Peak Memory % ©100.0 %20.9%Filter by requestsAva. response296 ms 140 rea/s100% 52Inu / May 10:00.30UparadeVXAlAll variablesIo environmentselectea.petecceamlohlmedGlobalstokenCKPur5PqMxIZQINQMI8kQE..baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vaultResn. time (Ava. me)15:53:10- Requests/second - Avg. response - Error % - Virtual users ••• CPU % •*• Memory %Min (ms))Max (me)poop95|GAAGiobals Vault Tooks •- m=m...
|
NULL
|
-7180875667722589744
|
NULL
|
visual_change
|
ocr
|
NULL
|
• (S)melpProiect vRematchActivityOnCrmObjectDetach • (S)melpProiect vRematchActivityOnCrmObjectDetach.phpT DeleteC© HubspotWebhocc) PaginationContig.onp© JiminnyDebugCommand.phpv D Pagination© HubspotPaginat© PaginationConfis T ImportBatchJobTrait.phpC) Paginationstate.u Hubspot//syncermenuuestrait.ono•_ Prospectsearchstr> 0 Redisclass HubspotPaq1nat1onServicev D ServiceTraits+Opportunitvsyn+ SyncermEntitiesT.WriteCrmtrait.p•DUts•WeonookC) BatchSvncCollectotC) BatchSvncRedisSe© Client.php© ClosedDealStagessG DealFieldsService.p© DecorateActivity.ph© FieldDefinitions.phpC) SieldTvneConverte0 HubsnotClientinter© HubspotTokenMan© PayloadBuilder.phpe DomotoCrmOhiontl• ResponseNormalize(e) Service.pnp© SyncFieldAction.ph© SyncRelatedActivitsc) WebhooksyncBatcv C IntegrationApp>_ Accessors›D ADI• contio> MDTO•D Filters•Hlobs• ProspectSearchStr.v ServiceTraitstSyternalManstirt InternalAccount? LavoutTrait nhnT. NotSunnortedTr. SvncCrmEntitiec?. SvncCrmSieldsTT CuneCrmMotad.T SystemStateTra© DataClient.php© DecorateActivity.ph13 usagespublic tunction getPaqlnateddatabenMulent scllent.array Soavloadhstrina Stvoelsint Soffset = 01int &$total = 0Ostrina &SlastRecordid = nuul): \Generator 1Sstate = new PaginationStateiofSendpoint = Client::BASE_URLSdofaul+Cilten = Snavloadrifi1tSresultsPerPage = PayloadBuildeSteamid = Sclient->ae+Confiao.Sdelav = Sthis->calculatelelavtdo{if ($this->shouldStopPag:hnosk.Spayload = sthis->handlepadusLeensdelav):Spage = Sthis->executeSeardSstate->setTotalspagel'tSthis->updateLastRecordIdII Safely iterate oven neSresults = Snadel'resultefonpach (Sresults as SrouSstate->incnementTot.yield $rowCctato-scothffcot/cthic.sCctato-sinenementPoauoctdSthis->loqPaginationProg} while (Sstate->offset && ! enI| Log final pagination complet• SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationv COLLECtIONS> CRM Owners> CRM Pipelines› Dealsengagements>D OLD ENGAGEMENTSuer list meetingsGET read callPost coarch calleGET ist callsPOST meetings scheduledGET det meetinoPOST get link to task>POST Create Contact with Association> Hubspotlteration run HSv GET Read Copyeg. An error occurred.se. successful operationv lteration run Search HSpost search contact oy emall copy> Journal & webhoooks v4> ©Auth› Properties> RESCAPCHSEARCHIpost search contact by phonePOST search contact by emailpost coarch meetinas> Post Search callc vaPOST Search related meetinas v3Post coarch deals> Ticketsv Uicofull› PosT filter oer comoanv / oniv onen deal stagesGet engagements old associated by dealGET engagements old associated by comoanvSustem Resource Warningsystem mav not be able to generate the loadeded for this test and the cest is likely to§ Connect Git E Console E TerminaGET Rea( •GET readGET Get ErGET Read Cou Iteration run Search HS • 20 VUs • May 07, 2026 15:52:11 (1 min) • Fixed profileSummaryTotal requests sent ©Requests/second ©.Ava, response time ©P90 ©P95 ©P996,980115.95153 ms16 ms198 ms308 ms% 100Mav 07 2026 15-52-21 - 15-52•25Avg. response147.062 ms20 VU18552.1415:52:2115:52:42Performance details for total durationTotal reauestseReauestelsFrror %Failure %POST search contact by email Copy115 60ad0lIterationPOST searc • POST searchError % @0.00Failure % ©0.00"Lukas sterka 121 • In 1h 34mIterationNo environmentSharePeak CPU %©Peak Memory % ©100.0 %20.9%Filter by requestsAva. response296 ms 140 rea/s100% 52Inu / May 10:00.30UparadeVXAlAll variablesIo environmentselectea.petecceamlohlmedGlobalstokenCKPur5PqMxIZQINQMI8kQE..baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vaultResn. time (Ava. me)15:53:10- Requests/second - Avg. response - Error % - Virtual users ••• CPU % •*• Memory %Min (ms))Max (me)poop95|GAAGiobals Vault Tooks •- m=m...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4069
|
146
|
1
|
2026-05-07T13:01:26.595837+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158886595_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"}]...
|
-2926991556879965638
|
1300659981600250076
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter...
|
4068
|
NULL
|
NULL
|
NULL
|
|
4071
|
145
|
1
|
2026-05-07T13:01:35.972874+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158895972_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
933
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"933","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3058524373122718549
|
6701901348364979261
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
933
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3...
|
4070
|
NULL
|
NULL
|
NULL
|
|
4122
|
148
|
1
|
2026-05-07T13:06:33.625130+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159193625_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"238","depth":4,"bounds":{"left":0.68351066,"top":0.13407822,"width":0.012300532,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3487367,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"bounds":{"left":0.3587101,"top":0.2490024,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37101063,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2379307789937465929
|
6701760610910178365
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4121
|
NULL
|
NULL
|
NULL
|
|
4123
|
147
|
1
|
2026-05-07T13:06:43.390558+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159203390_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"238","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2379307789937465929
|
6701760610910178365
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4120
|
NULL
|
NULL
|
NULL
|
|
4156
|
150
|
1
|
2026-05-07T13:12:17.132989+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159537132_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
653
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"653","depth":4,"bounds":{"left":0.6831782,"top":0.13407822,"width":0.012632979,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.35006648,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3600399,"top":0.2490024,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"bounds":{"left":0.3693484,"top":0.2490024,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4206347039647226460
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
653
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4155
|
NULL
|
NULL
|
NULL
|
|
4157
|
149
|
1
|
2026-05-07T13:12:17.352403+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159537352_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
653
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"653","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4206347039647226460
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
653
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4153
|
NULL
|
NULL
|
NULL
|
|
4208
|
152
|
1
|
2026-05-07T13:17:00.871801+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159820871_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"699","depth":4,"bounds":{"left":0.6831782,"top":0.13407822,"width":0.012632979,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.359375,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"bounds":{"left":0.3693484,"top":0.2490024,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n $retryAfter = $client->parseRetryAfter($e);\n\n $this->logger->info('[Hubspot] Received 429 from API', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'config_id' => $client->getConfig()->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isHubspotRateLimit($e)) {\n $retryAfter = $client->parseRetryAfter($e);\n\n $this->logger->info('[Hubspot] Received 429 from API', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'config_id' => $client->getConfig()->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1521951907897961092
|
6701901348398533693
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4207
|
NULL
|
NULL
|
NULL
|
|
4209
|
151
|
1
|
2026-05-07T13:17:16.081044+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159836081_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6041807037674716912
|
-8348188946929047100
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0(ab)# Lukas/Stefka 121 - in 1h 13 m100% <78Thu 7 May 16:17:15DEV (docker)T₴1|DOCKER₴1DEV (docker)882APP (-zsh)jiminny-worker-processing-2:j1minny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugMatchingcontact 0-zsh• 84screenpipe****5-zsh₴6DEVSevenShores\Hubspot\Exceptions\BadRequestClient error: *POST [URL_WITH_CREDENTIALS] ]...
|
4206
|
NULL
|
NULL
|
NULL
|
|
4259
|
154
|
1
|
2026-05-07T13:21:51.168694+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778160111168_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanVIewWindowmelpProledeyRematchActivityOnCrmO PostmanVIewWindowmelpProledeyRematchActivityOnCrmObjectDetach.php(C) TranscodeParameterRescl© UserService.php© Uuid.php> D Traits> D UseCases> D User> D Utils› D Validation> OvOphp nelpers.ong© InitialFrontendState.php© Jiminny.phpc) Plan.oho© Serializer.phpC) TeamScimDetails.ohpbootstrap>C build> contia>D contrib→ database>M docsM front-end>D lang> node_modules library rootM ohostan> M nublic>O resourcesv Mroutesphp api.phpphp api_v2.phppnp console.onopnp customer_api.onppnp embedded.ongpnp nealtn.onppnp scim.onophp uprotectedweb.phpphp web.phpphp webhook.php>O scriptsv O storage•aoo> M debuabar.… M frameworkv loasaitianore• audio wav= custom.loal© HubspotPaginationService.php X© PaginationState.phpT OpportunitySyncTrait.php© WebhookSyncBatchProcessor.phc(C) Hubspot/Service.pho© Companies.phc(C) Matchi(C) CachedCrmServiceDecorator.php* Hubspot/../SyncC@' OpportunitvSvncTest.ohp(C) RateLimit.oho© Pro.cllass HuhsnotPaoinationServicapublic function getPaginatedDataGerforeach (Sresults as SrowSthis->logPaginationProgres} while (Sstate->offset && ! empty// Log final pagination completioSthis->logger→>info('[Hubspot] PacItoam idi => Steamtdl'endpoint' => $endpoint"coraL_requests = ostate->reItotal noconde fotchodi = Cct"coraL_eLapsed_seconas → rouI/ Update reference parametersStotal = Sstate->total:SlastRecordid = sstate->lastRecorveldorivate function shouldStooPaginationdi1+ Sstate-shasReachedSaFetvlimitsafotv limiti => Paginati= hubspot-journal-poll.logItotal fotchedl => Sstate= laravel logus tht isrecurn truerhel# Lukas/Stefka 121 - in 1h 9mYour team is now on the Free olan with 1 admin. You retain editina access and other members are read-onlv. View team nermissions to see who can edit or unarade to restore collaborationRun orderRun SequenceGET ReadV COLLECTIONS> CRM Owners> CRM Pipelines› Dealsengagements>D OLD ENGAGEMENTSuer list meetingsGET read callGET ist callsPOST meetings scheduledGET det meetinoPost get link to task>POST Create Contact with Association› Hubspotvteration run HSv GET Read Copyeg. An error occurred.se. successful operationv Iteration run Search HSpost search contact oy emall copy> ©Authi› Properties> RESCAPCHSEARCHIpost search contact by phonePOST search contact by emailPOST search meetings> post Search calle v2POST Search related meetinas v3Post coarch deals> Ticketsv UicofullGET engagements old associated by dealments old associated by companvSustem Resource Warningsystem mav not be able to generate the loadeded for this test and the cest is likely toa Connect GitConcole 5.) TerminaPosT search contact by email Copy• SearchGET read call • GET Get Engage •GET Read CopyGET httos:/lapi.r0 lteration run HPOST search contaPOSt search contamIteration run SFunctional Perfor,manceDeselect AllSelect All ResetChoose how to run vour pertormance test• In the appVia the elSet up vour performance testLoad profile GVirtual users ©Test durationFixed100% L2Inu / May 10.21:01Uparade• RunnenNo environment20 virtual users run for 1 minute, each executing all requests sequentiallvData file GSelect file>Pass test if... ©Globals Vault Tools?000...
|
NULL
|
-3721890229108584772
|
NULL
|
visual_change
|
ocr
|
NULL
|
PostmanVIewWindowmelpProledeyRematchActivityOnCrmO PostmanVIewWindowmelpProledeyRematchActivityOnCrmObjectDetach.php(C) TranscodeParameterRescl© UserService.php© Uuid.php> D Traits> D UseCases> D User> D Utils› D Validation> OvOphp nelpers.ong© InitialFrontendState.php© Jiminny.phpc) Plan.oho© Serializer.phpC) TeamScimDetails.ohpbootstrap>C build> contia>D contrib→ database>M docsM front-end>D lang> node_modules library rootM ohostan> M nublic>O resourcesv Mroutesphp api.phpphp api_v2.phppnp console.onopnp customer_api.onppnp embedded.ongpnp nealtn.onppnp scim.onophp uprotectedweb.phpphp web.phpphp webhook.php>O scriptsv O storage•aoo> M debuabar.… M frameworkv loasaitianore• audio wav= custom.loal© HubspotPaginationService.php X© PaginationState.phpT OpportunitySyncTrait.php© WebhookSyncBatchProcessor.phc(C) Hubspot/Service.pho© Companies.phc(C) Matchi(C) CachedCrmServiceDecorator.php* Hubspot/../SyncC@' OpportunitvSvncTest.ohp(C) RateLimit.oho© Pro.cllass HuhsnotPaoinationServicapublic function getPaginatedDataGerforeach (Sresults as SrowSthis->logPaginationProgres} while (Sstate->offset && ! empty// Log final pagination completioSthis->logger→>info('[Hubspot] PacItoam idi => Steamtdl'endpoint' => $endpoint"coraL_requests = ostate->reItotal noconde fotchodi = Cct"coraL_eLapsed_seconas → rouI/ Update reference parametersStotal = Sstate->total:SlastRecordid = sstate->lastRecorveldorivate function shouldStooPaginationdi1+ Sstate-shasReachedSaFetvlimitsafotv limiti => Paginati= hubspot-journal-poll.logItotal fotchedl => Sstate= laravel logus tht isrecurn truerhel# Lukas/Stefka 121 - in 1h 9mYour team is now on the Free olan with 1 admin. You retain editina access and other members are read-onlv. View team nermissions to see who can edit or unarade to restore collaborationRun orderRun SequenceGET ReadV COLLECTIONS> CRM Owners> CRM Pipelines› Dealsengagements>D OLD ENGAGEMENTSuer list meetingsGET read callGET ist callsPOST meetings scheduledGET det meetinoPost get link to task>POST Create Contact with Association› Hubspotvteration run HSv GET Read Copyeg. An error occurred.se. successful operationv Iteration run Search HSpost search contact oy emall copy> ©Authi› Properties> RESCAPCHSEARCHIpost search contact by phonePOST search contact by emailPOST search meetings> post Search calle v2POST Search related meetinas v3Post coarch deals> Ticketsv UicofullGET engagements old associated by dealments old associated by companvSustem Resource Warningsystem mav not be able to generate the loadeded for this test and the cest is likely toa Connect GitConcole 5.) TerminaPosT search contact by email Copy• SearchGET read call • GET Get Engage •GET Read CopyGET httos:/lapi.r0 lteration run HPOST search contaPOSt search contamIteration run SFunctional Perfor,manceDeselect AllSelect All ResetChoose how to run vour pertormance test• In the appVia the elSet up vour performance testLoad profile GVirtual users ©Test durationFixed100% L2Inu / May 10.21:01Uparade• RunnenNo environment20 virtual users run for 1 minute, each executing all requests sequentiallvData file GSelect file>Pass test if... ©Globals Vault Tools?000...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4260
|
153
|
1
|
2026-05-07T13:21:51.647244+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778160111647_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0# Lukas/Stefka 121 • in 1h 9m100% <478DEV (docker)DOCKERO &1DEV (docker)882APP (-zsh)jiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matching contact 2Matching contactMatchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 16:21:51T81₴6DEV...
|
NULL
|
5183583612166156604
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0# Lukas/Stefka 121 • in 1h 9m100% <478DEV (docker)DOCKERO &1DEV (docker)882APP (-zsh)jiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matching contact 2Matching contactMatchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 16:21:51T81₴6DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4328
|
156
|
1
|
2026-05-07T13:27:10.601256+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778160430601_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
286
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":10,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {"exception":"[object] (Jiminny\\Exceptions\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)
[stacktrace]
#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
[previous exception] [object] (SevenShores\\Hubspot\\Exceptions\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\Hubspot\\Exceptions\\HubspotException::create(Object(GuzzleHttp\\Exception\\ClientException))
#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#20 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#21 {main}
[previous exception] [object] (GuzzleHttp\\Exception\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)
[stacktrace]
#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response), NULL, Array, NULL)
#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Response))
#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), NULL)
#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()
#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run(true)
#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn()
#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending()
#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending()
#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Promise\\Promise->wait()
#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\Client->request('POST', 'https://api.hub...', Array)
#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#30 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#31 {main}
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring start {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring end {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:52] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"13eed139-b218-43c9-b147-38ae92c45977","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"connect-and-sell"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Start user synchronisation {"provider":"justcall","teams_count":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Synchronising team {"provider":"justcall","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9","account":{"Jiminny\\Models\\SocialAccount":{"id":1367,"sociable_id":1071,"provider_user_id":"005O4000003s5c7IAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-10 07:05:21","updated_at":"2026-01-14 07:00:58"}}} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":1071,"team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","provider":"justcall","team_id":1,"team":"jiminny"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"ringcentral"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"avaya"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"telus"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"salesloft"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"talkdesk"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"vonage"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Done {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring start {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring end {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"df682399-d6b7-464b-9aea-85a4d7b10c27","trace_id":"532cf674-cebb-4b99-9190-d3020576b5db"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring start {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring end {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"13:20","to":"13:25"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"03:15","to":"03:20"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed","trace_id":"89eb011f-145e-44f2-a376-0c57cf42c11d"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1b0300f0-a82f-4bf2-b5dc-24e9d04babab","trace_id":"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"286","depth":4,"bounds":{"left":0.68351066,"top":0.10055866,"width":0.012300532,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.09896249,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.09896249,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {\"team_id\":2,\"config_id\":2,\"retry_after\":10,\"reason\":\"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\n[previous exception] [object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#21 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#31 {main}\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring start {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring end {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:52] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"13eed139-b218-43c9-b147-38ae92c45977\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"connect-and-sell\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Start user synchronisation {\"provider\":\"justcall\",\"teams_count\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Synchronising team {\"provider\":\"justcall\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1367,\"sociable_id\":1071,\"provider_user_id\":\"005O4000003s5c7IAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-10 07:05:21\",\"updated_at\":\"2026-01-14 07:00:58\"}}} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":1071,\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {\"message\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\",\"provider\":\"justcall\",\"team_id\":1,\"team\":\"jiminny\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"ringcentral\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"avaya\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"telus\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"salesloft\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"talkdesk\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"vonage\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Done {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring start {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring end {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"df682399-d6b7-464b-9aea-85a4d7b10c27\",\"trace_id\":\"532cf674-cebb-4b99-9190-d3020576b5db\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring start {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring end {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"13:20\",\"to\":\"13:25\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"03:15\",\"to\":\"03:20\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:27:50.028972Z\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:01] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring start {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring end {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}","depth":4,"bounds":{"left":0.33976063,"top":0.09736632,"width":0.66023934,"height":0.90263367},"on_screen":true,"value":"[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {\"team_id\":2,\"config_id\":2,\"retry_after\":10,\"reason\":\"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\n[previous exception] [object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#21 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#31 {main}\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring start {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring end {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:52] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"13eed139-b218-43c9-b147-38ae92c45977\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"connect-and-sell\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Start user synchronisation {\"provider\":\"justcall\",\"teams_count\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Synchronising team {\"provider\":\"justcall\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1367,\"sociable_id\":1071,\"provider_user_id\":\"005O4000003s5c7IAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-10 07:05:21\",\"updated_at\":\"2026-01-14 07:00:58\"}}} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":1071,\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {\"message\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\",\"provider\":\"justcall\",\"team_id\":1,\"team\":\"jiminny\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"ringcentral\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"avaya\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"telus\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"salesloft\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"talkdesk\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"vonage\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Done {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring start {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring end {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"df682399-d6b7-464b-9aea-85a4d7b10c27\",\"trace_id\":\"532cf674-cebb-4b99-9190-d3020576b5db\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring start {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring end {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"13:20\",\"to\":\"13:25\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"03:15\",\"to\":\"03:20\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:27:50.028972Z\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:01] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring start {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring end {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3487367,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"bounds":{"left":0.3587101,"top":0.2490024,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37101063,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $this->log->info('[Hubspot] DEBUG Getting headers', [\n 'headers' => $headers,\n ]);\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $this->log->info('[Hubspot] DEBUG Getting headers', [\n 'headers' => $headers,\n ]);\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1730529068194222450
|
-2377496734205403971
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
286
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":10,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {"exception":"[object] (Jiminny\\Exceptions\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)
[stacktrace]
#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
[previous exception] [object] (SevenShores\\Hubspot\\Exceptions\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\Hubspot\\Exceptions\\HubspotException::create(Object(GuzzleHttp\\Exception\\ClientException))
#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#20 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#21 {main}
[previous exception] [object] (GuzzleHttp\\Exception\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)
[stacktrace]
#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response), NULL, Array, NULL)
#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Response))
#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), NULL)
#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()
#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run(true)
#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn()
#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending()
#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending()
#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Promise\\Promise->wait()
#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\Client->request('POST', 'https://api.hub...', Array)
#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#30 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#31 {main}
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring start {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring end {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:52] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"13eed139-b218-43c9-b147-38ae92c45977","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"connect-and-sell"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Start user synchronisation {"provider":"justcall","teams_count":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Synchronising team {"provider":"justcall","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9","account":{"Jiminny\\Models\\SocialAccount":{"id":1367,"sociable_id":1071,"provider_user_id":"005O4000003s5c7IAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-10 07:05:21","updated_at":"2026-01-14 07:00:58"}}} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":1071,"team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","provider":"justcall","team_id":1,"team":"jiminny"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"ringcentral"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"avaya"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"telus"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"salesloft"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"talkdesk"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"vonage"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Done {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring start {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring end {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"df682399-d6b7-464b-9aea-85a4d7b10c27","trace_id":"532cf674-cebb-4b99-9190-d3020576b5db"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring start {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring end {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"13:20","to":"13:25"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"03:15","to":"03:20"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed","trace_id":"89eb011f-145e-44f2-a376-0c57cf42c11d"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1b0300f0-a82f-4bf2-b5dc-24e9d04babab","trace_id":"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4329
|
155
|
1
|
2026-05-07T13:27:21.092312+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778160441092_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
286
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":10,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {"exception":"[object] (Jiminny\\Exceptions\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)
[stacktrace]
#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
[previous exception] [object] (SevenShores\\Hubspot\\Exceptions\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\Hubspot\\Exceptions\\HubspotException::create(Object(GuzzleHttp\\Exception\\ClientException))
#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#20 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#21 {main}
[previous exception] [object] (GuzzleHttp\\Exception\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)
[stacktrace]
#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response), NULL, Array, NULL)
#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Response))
#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), NULL)
#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()
#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run(true)
#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn()
#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending()
#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending()
#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Promise\\Promise->wait()
#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\Client->request('POST', 'https://api.hub...', Array)
#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#30 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#31 {main}
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring start {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring end {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:52] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"13eed139-b218-43c9-b147-38ae92c45977","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"connect-and-sell"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Start user synchronisation {"provider":"justcall","teams_count":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Synchronising team {"provider":"justcall","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9","account":{"Jiminny\\Models\\SocialAccount":{"id":1367,"sociable_id":1071,"provider_user_id":"005O4000003s5c7IAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-10 07:05:21","updated_at":"2026-01-14 07:00:58"}}} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":1071,"team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","provider":"justcall","team_id":1,"team":"jiminny"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"ringcentral"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"avaya"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"telus"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"salesloft"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"talkdesk"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"vonage"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Done {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring start {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring end {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"df682399-d6b7-464b-9aea-85a4d7b10c27","trace_id":"532cf674-cebb-4b99-9190-d3020576b5db"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring start {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring end {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"13:20","to":"13:25"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"03:15","to":"03:20"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed","trace_id":"89eb011f-145e-44f2-a376-0c57cf42c11d"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1b0300f0-a82f-4bf2-b5dc-24e9d04babab","trace_id":"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"286","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {\"team_id\":2,\"config_id\":2,\"retry_after\":10,\"reason\":\"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\n[previous exception] [object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#21 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#31 {main}\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring start {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring end {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:52] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"13eed139-b218-43c9-b147-38ae92c45977\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"connect-and-sell\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Start user synchronisation {\"provider\":\"justcall\",\"teams_count\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Synchronising team {\"provider\":\"justcall\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1367,\"sociable_id\":1071,\"provider_user_id\":\"005O4000003s5c7IAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-10 07:05:21\",\"updated_at\":\"2026-01-14 07:00:58\"}}} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":1071,\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {\"message\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\",\"provider\":\"justcall\",\"team_id\":1,\"team\":\"jiminny\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"ringcentral\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"avaya\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"telus\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"salesloft\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"talkdesk\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"vonage\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Done {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring start {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring end {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"df682399-d6b7-464b-9aea-85a4d7b10c27\",\"trace_id\":\"532cf674-cebb-4b99-9190-d3020576b5db\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring start {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring end {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"13:20\",\"to\":\"13:25\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"03:15\",\"to\":\"03:20\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:27:50.028972Z\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:01] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring start {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring end {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}","depth":4,"on_screen":true,"value":"[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {\"team_id\":2,\"config_id\":2,\"retry_after\":10,\"reason\":\"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {\"exception\":\"[object] (Jiminny\\\\Exceptions\\\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\n[previous exception] [object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#21 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e029a-6 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#31 {main}\n\"} {\"correlation_id\":\"343f341d-028f-4c8c-9578-252fcde6e04c\",\"trace_id\":\"41071c00-9712-46eb-8acf-d5c4298fea69\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c\",\"trace_id\":\"b9aec736-45fd-47fc-9482-fd558ed6227a\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c\",\"trace_id\":\"284e571d-ab92-4e22-b09b-c151c2871cb4\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring start {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:19] local.NOTICE: Monitoring end {\"correlation_id\":\"c41d4048-0465-4dcf-bb53-176287732e3e\",\"trace_id\":\"9ce4a71c-a1a0-456e-843d-38fd15e5c798\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"934766d6-40c0-415c-bd51-d0b67a799c7c\",\"trace_id\":\"d6c773e8-adf4-453b-8a17-077bf7bdf698\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72\",\"trace_id\":\"3ca2e911-32f2-4c22-89ba-aae5e8342c8d\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:41] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b\",\"trace_id\":\"897fc576-4657-4534-ac78-73f6c44cbeef\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"08dc0025-4642-4d21-a351-c0dee099d6fc\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:52] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"13eed139-b218-43c9-b147-38ae92c45977\",\"trace_id\":\"b0e009f0-3c67-4281-87ce-4ccdc1ab3055\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf9df816-4614-4a06-b853-4d6815fb85e1\",\"trace_id\":\"ca6ed313-c21f-4683-8b5b-013a3ecd4081\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:22:57] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"twilio:recover-tracks\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"93d3bd4f-fe02-4d22-aab9-00c74309e94c\",\"trace_id\":\"356db0f7-0c25-4739-8c8b-a55ba28e1df0\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"connect-and-sell\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Start user synchronisation {\"provider\":\"justcall\",\"teams_count\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Synchronising team {\"provider\":\"justcall\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1367,\"sociable_id\":1071,\"provider_user_id\":\"005O4000003s5c7IAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2024-09-10 07:05:21\",\"updated_at\":\"2026-01-14 07:00:58\"}}} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":1071,\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {\"message\":\"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.\",\"provider\":\"justcall\",\"team_id\":1,\"team\":\"jiminny\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"ringcentral\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"avaya\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"telus\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"salesloft\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"talkdesk\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {\"provider\":\"vonage\"} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Done {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:23:00] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:sync-users\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb2297ef-3768-4c39-a39d-8d56cc5f19fd\",\"trace_id\":\"f5f44e82-383e-4e36-b898-5e6a6bb73621\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4823ff8-4b94-4b35-81dd-b4b0c6c33224\",\"trace_id\":\"3927c06e-924a-4ccf-aec1-7527a88db4b7\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2d53fd0-ef62-42d7-bf03-2b78fe690081\",\"trace_id\":\"ccc71cd2-62d3-4641-bbef-d3ac924250df\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring start {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:09] local.NOTICE: Monitoring end {\"correlation_id\":\"550636b7-858f-4d9a-a78c-1a4464ffe5d6\",\"trace_id\":\"3a5f8440-816e-420f-a5a4-40ad67ca1542\"}\n[2026-05-07 13:24:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"97b9a580-2259-4931-82fd-86db94dccd2f\",\"trace_id\":\"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3b0ce230-1556-40b0-86c2-adcd640e0031\",\"trace_id\":\"daaa38cb-2236-485a-bce0-2903bea27543\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e954d31-bae9-402a-8d1a-69ed8656bcaf\",\"trace_id\":\"3a651475-e65f-4f45-bfc6-dc2a321794ca\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb\",\"trace_id\":\"da669f79-4ec8-4092-bf4c-0c4bfd80a23e\"}\n[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"df682399-d6b7-464b-9aea-85a4d7b10c27\",\"trace_id\":\"532cf674-cebb-4b99-9190-d3020576b5db\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aca15380-d0fd-443c-ac7e-ec11c07c82ab\",\"trace_id\":\"d281a9be-34bb-452d-9a26-acd05f2fa5fb\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"846be41a-5d95-4144-ad3c-273defc37bea\",\"trace_id\":\"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring start {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:11] local.NOTICE: Monitoring end {\"correlation_id\":\"779be55d-57e0-4a33-8d13-cb3fda9c8ce5\",\"trace_id\":\"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"75ba5939-1152-41ac-bed9-e3c203b981c3\",\"trace_id\":\"f8537beb-7cb8-4f02-ab66-07754746b812\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a\",\"trace_id\":\"1b5d36d1-4a99-49e1-8ef3-9085383ae098\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c03ff8f-9391-46b3-9001-5d3e3f364d29\",\"trace_id\":\"5c5f2a08-7eb1-4eb3-9754-cde3f0425216\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"640405cd-fddb-4ae4-ab6b-0da9052b22fa\",\"trace_id\":\"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"26ef1aeb-f591-43d4-ab0c-4fa8dd165273\",\"trace_id\":\"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"52732df6-3bc1-4401-a830-66f07383aa16\",\"trace_id\":\"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"13:20\",\"to\":\"13:25\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"03:15\",\"to\":\"03:20\"} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b\",\"trace_id\":\"647ac71c-b02e-42a2-80c4-a004eecd1f05\"}\n[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f\",\"trace_id\":\"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1b0300f0-a82f-4bf2-b5dc-24e9d04babab\",\"trace_id\":\"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4\"}\n[2026-05-07 13:25:49] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed\",\"trace_id\":\"89eb011f-145e-44f2-a376-0c57cf42c11d\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:27:50.028972Z\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:50] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:25:55] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:00] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:01] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2e5c4d7c-4990-4bab-8102-282568135ae5\",\"trace_id\":\"b3683d3a-6d60-418f-93a7-b4e519e6e9fa\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ee796e63-4695-4e57-87b5-7b9c10b19482\",\"trace_id\":\"7fecef79-6c7f-4c31-82d2-7395580a0ed0\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"297c49e8-b352-428d-842b-d6dd4e323e6d\",\"trace_id\":\"b4fda19c-ea2e-4308-a0a2-0037f531c7bc\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring start {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:16] local.NOTICE: Monitoring end {\"correlation_id\":\"0bd4d4e0-3f28-4499-a466-2df7417642ac\",\"trace_id\":\"c2ddee2c-c752-4599-9e6e-51555ccccd6e\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e580e438-336c-4339-ad10-da57a6ef3d65\",\"trace_id\":\"8206dc80-48ec-41c2-9f9a-fe3d7b7d138b\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a629246-6614-45c9-b831-84369bc91ea1\",\"trace_id\":\"097fefaa-4658-4195-8835-7d27c09a141a\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:24:00, 2026-05-07 13:26:00] {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}\n[2026-05-07 13:26:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"485b88e8-71ef-4690-b8bc-dae67c82f77d\",\"trace_id\":\"33abbec0-3f3b-441d-92e4-e9442036176d\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $this->log->info('[Hubspot] DEBUG Getting headers', [\n 'headers' => $headers,\n ]);\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $this->log->info('[Hubspot] DEBUG Getting headers', [\n 'headers' => $headers,\n ]);\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1730529068194222450
|
-2377496734205403971
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
286
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:12] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: [Hubspot] Received 429 from API {"team_id":2,"config_id":2,"retry_after":10,"reason":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.ERROR: Hubspot returned 429 {"exception":"[object] (Jiminny\\Exceptions\\RateLimitException(code: 0): Hubspot returned 429 at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206)
[stacktrace]
#0 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#2 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
[previous exception] [object] (SevenShores\\Hubspot\\Exceptions\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\Hubspot\\Exceptions\\HubspotException::create(Object(GuzzleHttp\\Exception\\ClientException))
#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#4 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#5 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#13 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#15 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#20 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#21 {main}
[previous exception] [object] (GuzzleHttp\\Exception\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e029a-6 (truncated...)
at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)
[stacktrace]
#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response), NULL, Array, NULL)
#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Response))
#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler(1, Object(GuzzleHttp\\Psr7\\Response), NULL)
#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()
#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run(true)
#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn()
#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending()
#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending()
#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Promise\\Promise->wait()
#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\Client->request('POST', 'https://api.hub...', Array)
#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(166): SevenShores\\Hubspot\\Http\\Client->request('POST', 'https://api.hub...', Array)
#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(52): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), 'https://api.hub...', Array, Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))
#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(176): Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), Array, 'contact', 0, 0, NULL)
#14 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\Services\\Crm\\Hubspot\\Client->getPaginatedData(Array, 'contact')
#15 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\Services\\Crm\\Hubspot\\Service->matchByName('Robot')
#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#23 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#25 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#30 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#31 {main}
"} {"correlation_id":"343f341d-028f-4c8c-9578-252fcde6e04c","trace_id":"41071c00-9712-46eb-8acf-d5c4298fea69"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"42c3d939-2b42-4fa8-9f57-cbdc5bb1457c","trace_id":"b9aec736-45fd-47fc-9482-fd558ed6227a"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"076c3e6b-6a67-4774-8aa0-2a84fcf5e03c","trace_id":"284e571d-ab92-4e22-b09b-c151c2871cb4"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring start {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:19] local.NOTICE: Monitoring end {"correlation_id":"c41d4048-0465-4dcf-bb53-176287732e3e","trace_id":"9ce4a71c-a1a0-456e-843d-38fd15e5c798"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"934766d6-40c0-415c-bd51-d0b67a799c7c","trace_id":"d6c773e8-adf4-453b-8a17-077bf7bdf698"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b99dafc3-0e7f-4cb3-9469-9a18bd4d8a72","trace_id":"3ca2e911-32f2-4c22-89ba-aae5e8342c8d"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:20:00, 2026-05-07 13:22:00] {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:41] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"b8b1efaa-e359-4aa1-942d-2dc8ca6c048b","trace_id":"897fc576-4657-4534-ac78-73f6c44cbeef"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"08dc0025-4642-4d21-a351-c0dee099d6fc","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:52] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"13eed139-b218-43c9-b147-38ae92c45977","trace_id":"b0e009f0-3c67-4281-87ce-4ccdc1ab3055"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cf9df816-4614-4a06-b853-4d6815fb85e1","trace_id":"ca6ed313-c21f-4683-8b5b-013a3ecd4081"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:22:57] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"twilio:recover-tracks","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"93d3bd4f-fe02-4d22-aab9-00c74309e94c","trace_id":"356db0f7-0c25-4739-8c8b-a55ba28e1df0"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"connect-and-sell"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Start user synchronisation {"provider":"justcall","teams_count":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Synchronising team {"provider":"justcall","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"cdf9285a-8ded-4a8b-bd7d-ec68c398f2f9","account":{"Jiminny\\Models\\SocialAccount":{"id":1367,"sociable_id":1071,"provider_user_id":"005O4000003s5c7IAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2024-09-10 07:05:21","updated_at":"2026-01-14 07:00:58"}}} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":1071,"team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.WARNING: Failed to sync external users {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","provider":"justcall","team_id":1,"team":"jiminny"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"ringcentral"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"avaya"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"telus"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"salesloft"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"talkdesk"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Skip provider synchronisation, no teams found {"provider":"vonage"} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Done {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:23:00] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:sync-users","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fb2297ef-3768-4c39-a39d-8d56cc5f19fd","trace_id":"f5f44e82-383e-4e36-b898-5e6a6bb73621"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e4823ff8-4b94-4b35-81dd-b4b0c6c33224","trace_id":"3927c06e-924a-4ccf-aec1-7527a88db4b7"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a2d53fd0-ef62-42d7-bf03-2b78fe690081","trace_id":"ccc71cd2-62d3-4641-bbef-d3ac924250df"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring start {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:09] local.NOTICE: Monitoring end {"correlation_id":"550636b7-858f-4d9a-a78c-1a4464ffe5d6","trace_id":"3a5f8440-816e-420f-a5a4-40ad67ca1542"}
[2026-05-07 13:24:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"97b9a580-2259-4931-82fd-86db94dccd2f","trace_id":"1809cb02-fcd4-4cf7-b426-2fe2cf347fb0"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3b0ce230-1556-40b0-86c2-adcd640e0031","trace_id":"daaa38cb-2236-485a-bce0-2903bea27543"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:22:00, 2026-05-07 13:24:00] {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e954d31-bae9-402a-8d1a-69ed8656bcaf","trace_id":"3a651475-e65f-4f45-bfc6-dc2a321794ca"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"64fdf422-e2d7-4ca1-9b11-1f11bd7a7cbb","trace_id":"da669f79-4ec8-4092-bf4c-0c4bfd80a23e"}
[2026-05-07 13:24:19] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"df682399-d6b7-464b-9aea-85a4d7b10c27","trace_id":"532cf674-cebb-4b99-9190-d3020576b5db"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"aca15380-d0fd-443c-ac7e-ec11c07c82ab","trace_id":"d281a9be-34bb-452d-9a26-acd05f2fa5fb"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"846be41a-5d95-4144-ad3c-273defc37bea","trace_id":"8e158a4b-31e7-4161-af5e-d83f2ad2f3b5"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring start {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:11] local.NOTICE: Monitoring end {"correlation_id":"779be55d-57e0-4a33-8d13-cb3fda9c8ce5","trace_id":"4eaf7c2a-5a99-4c32-9fb9-b1377cacdebb"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"75ba5939-1152-41ac-bed9-e3c203b981c3","trace_id":"f8537beb-7cb8-4f02-ab66-07754746b812"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"35858849-c9e7-44d7-ac0f-c7b3eecd1a3a","trace_id":"1b5d36d1-4a99-49e1-8ef3-9085383ae098"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3c03ff8f-9391-46b3-9001-5d3e3f364d29","trace_id":"5c5f2a08-7eb1-4eb3-9754-cde3f0425216"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"640405cd-fddb-4ae4-ab6b-0da9052b22fa","trace_id":"0f39ab5c-c1aa-4aa1-a71c-b62823493c4e"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Running pre-meeting notification command {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"26ef1aeb-f591-43d4-ab0c-4fa8dd165273","trace_id":"d8d3e856-4c59-4dc5-b4d7-0e9fc2f8b9d4"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 13:15:00, 2026-05-07 13:20:00] {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"52732df6-3bc1-4401-a830-66f07383aa16","trace_id":"0f0c7d16-ddae-47c4-b32c-f46c6b2d9496"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"13:20","to":"13:25"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"03:15","to":"03:20"} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e8ebebd-f953-4c7f-92eb-0c9ccb91769b","trace_id":"647ac71c-b02e-42a2-80c4-a004eecd1f05"}
[2026-05-07 13:25:41] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:42] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"6ec66e54-ca2e-4f58-a47d-b72ed5fbb13f","trace_id":"e6017fa4-1986-4c9e-9e8d-2f9baa13d9c6"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2775b4f9-6dce-40a2-84ad-fb7f3a2729ed","trace_id":"89eb011f-145e-44f2-a376-0c57cf42c11d"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1b0300f0-a82f-4bf2-b5dc-24e9d04babab","trace_id":"af7b7ef6-7376-48fe-b7b9-a5ad41237fa4"}
[2026-05-07 13:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id...
|
4326
|
NULL
|
NULL
|
NULL
|
|
4386
|
157
|
1
|
2026-05-07T13:32:33.144864+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778160753144_m1.jpg...
|
iTerm2
|
DEV (docker)
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.32ms DONE
cache [PASSWORD_DOTS] 10.62ms DONE
compiled [PASSWORD_DOTS] 3.60ms DONE
events [PASSWORD_DOTS] 2.60ms DONE
routes [PASSWORD_DOTS] 2.72ms DONE
views [PASSWORD_DOTS] 5.95ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-audio:worker-audio_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
HubSpot\Client\Crm\Deals\ApiException
[429] Client error: `GET [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 10.49ms DONE
cache [PASSWORD_DOTS] 21.31ms DONE
compiled [PASSWORD_DOTS] 3.11ms DONE
events [PASSWORD_DOTS] 5.05ms DONE
routes [PASSWORD_DOTS] 1.83ms DONE
views [PASSWORD_DOTS] 4.91ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 37.77ms DONE
cache [PASSWORD_DOTS] 58.83ms DONE
compiled [PASSWORD_DOTS] 9.93ms DONE
events [PASSWORD_DOTS] 12.23ms DONE
routes [PASSWORD_DOTS] 5.02ms DONE
views [PASSWORD_DOTS] 21.46ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 6.01ms DONE
cache [PASSWORD_DOTS] 16.11ms DONE
compiled [PASSWORD_DOTS] 2.91ms DONE
events [PASSWORD_DOTS] 2.27ms DONE
routes [PASSWORD_DOTS] 3.11ms DONE
views [PASSWORD_DOTS] 18.41ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
SevenShores\Hubspot\Exceptions\BadRequest
Client error: `POST [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 55.84ms DONE
cache [PASSWORD_DOTS] 108.68ms DONE
compiled [PASSWORD_DOTS] 22.07ms DONE
events [PASSWORD_DOTS] 25.86ms DONE
routes [PASSWORD_DOTS] 19.91ms DONE
views [PASSWORD_DOTS] 52.25ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-audio:worker-audio_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
TypeError
Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned
at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:83
79▕
80▕ // Update reference parameters
81▕ $total = $state->total;
82▕ $lastRecordId = $state->lastRecordId;
➜ 83▕ }
84▕
85▕ private function shouldStopPagination(PaginationState $state, int $teamId): bool
86▕ {
87▕ if ($state->hasReachedSafetyLimit()) {
1 app/Services/Crm/Hubspot/Client.php:195
Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService::getPaginatedDataGenerator(Object(Jiminny\Services\Crm\Hubspot\Client), [], "contact")
2 app/Services/Crm/Hubspot/Client.php:176
Jiminny\Services\Crm\Hubspot\Client::getPaginatedDataGenerator([], "contact")
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 14.73ms DONE
cache [PASSWORD_DOTS] 19.13ms DONE
compiled [PASSWORD_DOTS] 4.93ms DONE
events [PASSWORD_DOTS] 3.02ms DONE
routes [PASSWORD_DOTS] 5.55ms DONE
views [PASSWORD_DOTS] 6.02ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-conferences:worker-conferences_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Jiminny\Exceptions\RateLimitException
Hubspot returned 429
at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206
202▕ 'retry_after' => $retryAfter,
203▕ 'reason' => $e->getMessage(),
204▕ ]);
205▕
➜ 206▕ throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
207▕ } else {
208▕ throw $e;
209▕ }
210▕ }
+14 vendor frames
15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:166
SevenShores\Hubspot\Http\Client::request("POST", "[URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.47ms DONE
cache [PASSWORD_DOTS] 16.66ms DONE
compiled [PASSWORD_DOTS] 3.26ms DONE
events [PASSWORD_DOTS] 3.99ms DONE
routes [PASSWORD_DOTS] 3.85ms DONE
views [PASSWORD_DOTS] 4.93ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.32ms DONE\n cache ............................................................................................................................... 10.62ms DONE\n compiled ............................................................................................................................. 3.60ms DONE\n events ............................................................................................................................... 2.60ms DONE\n routes ............................................................................................................................... 2.72ms DONE\n views ................................................................................................................................ 5.95ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\n\n HubSpot\\Client\\Crm\\Deals\\ApiException \n\n [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)\n\n at vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704\n 700▕ $options = $this->createHttpClientOption();\n 701▕ try {\n 702▕ $response = $this->client->send($request, $options);\n 703▕ } catch (RequestException $e) {\n ➜ 704▕ throw new ApiException(\n 705▕ \"[{$e->getCode()}] {$e->getMessage()}\",\n 706▕ (int) $e->getCode(),\n 707▕ $e->getResponse() ? $e->getResponse()->getHeaders() : null,\n 708▕ $e->getResponse() ? (string) $e->getResponse()->getBody() : null\n\n +1 vendor frames \n\n 2 app/Services/Crm/Hubspot/Client.php:212\n HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi::getById(\"374720564\", \"hs_object_id,dealname\", \"companies,contacts\")\n\n 3 app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php:130\n Jiminny\\Services\\Crm\\Hubspot\\Client::getOpportunityById(\"374720564\")\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 10.49ms DONE\n cache ............................................................................................................................... 21.31ms DONE\n compiled ............................................................................................................................. 3.11ms DONE\n events ............................................................................................................................... 5.05ms DONE\n routes ............................................................................................................................... 1.83ms DONE\n views ................................................................................................................................ 4.91ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 37.77ms DONE\n cache ............................................................................................................................... 58.83ms DONE\n compiled ............................................................................................................................. 9.93ms DONE\n events .............................................................................................................................. 12.23ms DONE\n routes ............................................................................................................................... 5.02ms DONE\n views ............................................................................................................................... 21.46ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 6.01ms DONE\n cache ............................................................................................................................... 16.11ms DONE\n compiled ............................................................................................................................. 2.91ms DONE\n events ............................................................................................................................... 2.27ms DONE\n routes ............................................................................................................................... 3.11ms DONE\n views ............................................................................................................................... 18.41ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n SevenShores\\Hubspot\\Exceptions\\BadRequest \n\n Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n\n at vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24\n 20▕ }\n 21▕ \n 22▕ public static function create(RequestException $guzzleException): self\n 23▕ {\n ➜ 24▕ $e = new static(\n 25▕ static::sanitizeResponseMessage($guzzleException->getMessage()),\n 26▕ $guzzleException->getCode(),\n 27▕ $guzzleException\n 28▕ );\n\n +13 vendor frames \n\n 14 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:163\n SevenShores\\Hubspot\\Http\\Client::request(\"POST\", \"https://api.hubapi.com/crm/v3/objects/contact/search\", [])\n\n 15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:51\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), \"https://api.hubapi.com/crm/v3/objects/contact/search\", [], Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 55.84ms DONE\n cache .............................................................................................................................. 108.68ms DONE\n compiled ............................................................................................................................ 22.07ms DONE\n events .............................................................................................................................. 25.86ms DONE\n routes .............................................................................................................................. 19.91ms DONE\n views ............................................................................................................................... 52.25ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-audio:worker-audio_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n TypeError \n\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned\n\n at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:83\n 79▕ \n 80▕ // Update reference parameters\n 81▕ $total = $state->total;\n 82▕ $lastRecordId = $state->lastRecordId;\n ➜ 83▕ }\n 84▕ \n 85▕ private function shouldStopPagination(PaginationState $state, int $teamId): bool\n 86▕ {\n 87▕ if ($state->hasReachedSafetyLimit()) {\n\n 1 app/Services/Crm/Hubspot/Client.php:195\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), [], \"contact\")\n\n 2 app/Services/Crm/Hubspot/Client.php:176\n Jiminny\\Services\\Crm\\Hubspot\\Client::getPaginatedDataGenerator([], \"contact\")\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 14.73ms DONE\n cache ............................................................................................................................... 19.13ms DONE\n compiled ............................................................................................................................. 4.93ms DONE\n events ............................................................................................................................... 3.02ms DONE\n routes ............................................................................................................................... 5.55ms DONE\n views ................................................................................................................................ 6.02ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-conferences:worker-conferences_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n Jiminny\\Exceptions\\RateLimitException \n\n Hubspot returned 429\n\n at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206\n 202▕ 'retry_after' => $retryAfter,\n 203▕ 'reason' => $e->getMessage(),\n 204▕ ]);\n 205▕ \n ➜ 206▕ throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n 207▕ } else {\n 208▕ throw $e;\n 209▕ }\n 210▕ }\n\n +14 vendor frames \n\n 15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:166\n SevenShores\\Hubspot\\Http\\Client::request(\"POST\", \"https://api.hubapi.com/crm/v3/objects/contact/search\", [])\n\n 16 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:52\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), \"https://api.hubapi.com/crm/v3/objects/contact/search\", [], Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.47ms DONE\n cache ............................................................................................................................... 16.66ms DONE\n compiled ............................................................................................................................. 3.26ms DONE\n events ............................................................................................................................... 3.99ms DONE\n routes ............................................................................................................................... 3.85ms DONE\n views ................................................................................................................................ 4.93ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","depth":4,"on_screen":true,"value":"root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.32ms DONE\n cache ............................................................................................................................... 10.62ms DONE\n compiled ............................................................................................................................. 3.60ms DONE\n events ............................................................................................................................... 2.60ms DONE\n routes ............................................................................................................................... 2.72ms DONE\n views ................................................................................................................................ 5.95ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\nSyncing opportunity 25\nSyncing opportunity 50\nSyncing opportunity 75\nSyncing opportunity 100\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nSyncing opportunity 0\n\n HubSpot\\Client\\Crm\\Deals\\ApiException \n\n [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)\n\n at vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704\n 700▕ $options = $this->createHttpClientOption();\n 701▕ try {\n 702▕ $response = $this->client->send($request, $options);\n 703▕ } catch (RequestException $e) {\n ➜ 704▕ throw new ApiException(\n 705▕ \"[{$e->getCode()}] {$e->getMessage()}\",\n 706▕ (int) $e->getCode(),\n 707▕ $e->getResponse() ? $e->getResponse()->getHeaders() : null,\n 708▕ $e->getResponse() ? (string) $e->getResponse()->getBody() : null\n\n +1 vendor frames \n\n 2 app/Services/Crm/Hubspot/Client.php:212\n HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi::getById(\"374720564\", \"hs_object_id,dealname\", \"companies,contacts\")\n\n 3 app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php:130\n Jiminny\\Services\\Crm\\Hubspot\\Client::getOpportunityById(\"374720564\")\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 10.49ms DONE\n cache ............................................................................................................................... 21.31ms DONE\n compiled ............................................................................................................................. 3.11ms DONE\n events ............................................................................................................................... 5.05ms DONE\n routes ............................................................................................................................... 1.83ms DONE\n views ................................................................................................................................ 4.91ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 37.77ms DONE\n cache ............................................................................................................................... 58.83ms DONE\n compiled ............................................................................................................................. 9.93ms DONE\n events .............................................................................................................................. 12.23ms DONE\n routes ............................................................................................................................... 5.02ms DONE\n views ............................................................................................................................... 21.46ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker:worker_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 6.01ms DONE\n cache ............................................................................................................................... 16.11ms DONE\n compiled ............................................................................................................................. 2.91ms DONE\n events ............................................................................................................................... 2.27ms DONE\n routes ............................................................................................................................... 3.11ms DONE\n views ............................................................................................................................... 18.41ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n SevenShores\\Hubspot\\Exceptions\\BadRequest \n\n Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n\n at vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24\n 20▕ }\n 21▕ \n 22▕ public static function create(RequestException $guzzleException): self\n 23▕ {\n ➜ 24▕ $e = new static(\n 25▕ static::sanitizeResponseMessage($guzzleException->getMessage()),\n 26▕ $guzzleException->getCode(),\n 27▕ $guzzleException\n 28▕ );\n\n +13 vendor frames \n\n 14 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:163\n SevenShores\\Hubspot\\Http\\Client::request(\"POST\", \"https://api.hubapi.com/crm/v3/objects/contact/search\", [])\n\n 15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:51\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), \"https://api.hubapi.com/crm/v3/objects/contact/search\", [], Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 55.84ms DONE\n cache .............................................................................................................................. 108.68ms DONE\n compiled ............................................................................................................................ 22.07ms DONE\n events .............................................................................................................................. 25.86ms DONE\n routes .............................................................................................................................. 19.91ms DONE\n views ............................................................................................................................... 52.25ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-audio:worker-audio_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n TypeError \n\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned\n\n at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:83\n 79▕ \n 80▕ // Update reference parameters\n 81▕ $total = $state->total;\n 82▕ $lastRecordId = $state->lastRecordId;\n ➜ 83▕ }\n 84▕ \n 85▕ private function shouldStopPagination(PaginationState $state, int $teamId): bool\n 86▕ {\n 87▕ if ($state->hasReachedSafetyLimit()) {\n\n 1 app/Services/Crm/Hubspot/Client.php:195\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), [], \"contact\")\n\n 2 app/Services/Crm/Hubspot/Client.php:176\n Jiminny\\Services\\Crm\\Hubspot\\Client::getPaginatedDataGenerator([], \"contact\")\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config .............................................................................................................................. 14.73ms DONE\n cache ............................................................................................................................... 19.13ms DONE\n compiled ............................................................................................................................. 4.93ms DONE\n events ............................................................................................................................... 3.02ms DONE\n routes ............................................................................................................................... 5.55ms DONE\n views ................................................................................................................................ 6.02ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-conferences:worker-conferences_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\nMatching contact 1\nMatching contact 2\nMatching contact 3\nMatching contact 4\nMatching contact 5\nMatching contact 6\nMatching contact 7\nMatching contact 8\nMatching contact 9\nroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debug\nMatching contact 0\n\n Jiminny\\Exceptions\\RateLimitException \n\n Hubspot returned 429\n\n at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206\n 202▕ 'retry_after' => $retryAfter,\n 203▕ 'reason' => $e->getMessage(),\n 204▕ ]);\n 205▕ \n ➜ 206▕ throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n 207▕ } else {\n 208▕ throw $e;\n 209▕ }\n 210▕ }\n\n +14 vendor frames \n\n 15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:166\n SevenShores\\Hubspot\\Http\\Client::request(\"POST\", \"https://api.hubapi.com/crm/v3/objects/contact/search\", [])\n\n 16 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:52\n Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::executeSearchRequest(Object(Jiminny\\Services\\Crm\\Hubspot\\Client), \"https://api.hubapi.com/crm/v3/objects/contact/search\", [], Object(Jiminny\\Services\\Crm\\Hubspot\\Pagination\\PaginationState))\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 4.47ms DONE\n cache ............................................................................................................................... 16.66ms DONE\n compiled ............................................................................................................................. 3.26ms DONE\n events ............................................................................................................................... 3.99ms DONE\n routes ............................................................................................................................... 3.85ms DONE\n views ................................................................................................................................ 4.93ms DONE\n\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.16458334,"top":0.05888889,"width":0.16458334,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.16875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.32916668,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33333334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.49340278,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49756944,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.6576389,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.66180557,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.821875,"top":0.05888889,"width":0.16423611,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.82604164,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.47013888,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-2075920028563311989
|
4433835180827902724
|
idle
|
accessibility
|
NULL
|
root@docker_lamp_1:/home/jiminny# php artisan jimi root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.32ms DONE
cache [PASSWORD_DOTS] 10.62ms DONE
compiled [PASSWORD_DOTS] 3.60ms DONE
events [PASSWORD_DOTS] 2.60ms DONE
routes [PASSWORD_DOTS] 2.72ms DONE
views [PASSWORD_DOTS] 5.95ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-audio:worker-audio_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
Syncing opportunity 25
Syncing opportunity 50
Syncing opportunity 75
Syncing opportunity 100
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Syncing opportunity 0
HubSpot\Client\Crm\Deals\ApiException
[429] Client error: `GET [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 10.49ms DONE
cache [PASSWORD_DOTS] 21.31ms DONE
compiled [PASSWORD_DOTS] 3.11ms DONE
events [PASSWORD_DOTS] 5.05ms DONE
routes [PASSWORD_DOTS] 1.83ms DONE
views [PASSWORD_DOTS] 4.91ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 37.77ms DONE
cache [PASSWORD_DOTS] 58.83ms DONE
compiled [PASSWORD_DOTS] 9.93ms DONE
events [PASSWORD_DOTS] 12.23ms DONE
routes [PASSWORD_DOTS] 5.02ms DONE
views [PASSWORD_DOTS] 21.46ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker:worker_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 6.01ms DONE
cache [PASSWORD_DOTS] 16.11ms DONE
compiled [PASSWORD_DOTS] 2.91ms DONE
events [PASSWORD_DOTS] 2.27ms DONE
routes [PASSWORD_DOTS] 3.11ms DONE
views [PASSWORD_DOTS] 18.41ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
SevenShores\Hubspot\Exceptions\BadRequest
Client error: `POST [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 55.84ms DONE
cache [PASSWORD_DOTS] 108.68ms DONE
compiled [PASSWORD_DOTS] 22.07ms DONE
events [PASSWORD_DOTS] 25.86ms DONE
routes [PASSWORD_DOTS] 19.91ms DONE
views [PASSWORD_DOTS] 52.25ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-audio:worker-audio_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
TypeError
Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned
at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:83
79▕
80▕ // Update reference parameters
81▕ $total = $state->total;
82▕ $lastRecordId = $state->lastRecordId;
➜ 83▕ }
84▕
85▕ private function shouldStopPagination(PaginationState $state, int $teamId): bool
86▕ {
87▕ if ($state->hasReachedSafetyLimit()) {
1 app/Services/Crm/Hubspot/Client.php:195
Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService::getPaginatedDataGenerator(Object(Jiminny\Services\Crm\Hubspot\Client), [], "contact")
2 app/Services/Crm/Hubspot/Client.php:176
Jiminny\Services\Crm\Hubspot\Client::getPaginatedDataGenerator([], "contact")
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 14.73ms DONE
cache [PASSWORD_DOTS] 19.13ms DONE
compiled [PASSWORD_DOTS] 4.93ms DONE
events [PASSWORD_DOTS] 3.02ms DONE
routes [PASSWORD_DOTS] 5.55ms DONE
views [PASSWORD_DOTS] 6.02ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-conferences:worker-conferences_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Matching contact 1
Matching contact 2
Matching contact 3
Matching contact 4
Matching contact 5
Matching contact 6
Matching contact 7
Matching contact 8
Matching contact 9
root@docker_lamp_1:/home/jiminny# php artisan jiminny:debug
Matching contact 0
Jiminny\Exceptions\RateLimitException
Hubspot returned 429
at app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:206
202▕ 'retry_after' => $retryAfter,
203▕ 'reason' => $e->getMessage(),
204▕ ]);
205▕
➜ 206▕ throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
207▕ } else {
208▕ throw $e;
209▕ }
210▕ }
+14 vendor frames
15 app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:166
SevenShores\Hubspot\Http\Client::request("POST", "[URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 4.47ms DONE
cache [PASSWORD_DOTS] 16.66ms DONE
compiled [PASSWORD_DOTS] 3.26ms DONE
events [PASSWORD_DOTS] 3.99ms DONE
routes [PASSWORD_DOTS] 3.85ms DONE
views [PASSWORD_DOTS] 4.93ms DONE
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
DEV (docker)...
|
4384
|
NULL
|
NULL
|
NULL
|