Summary

📬 This release completes localized emails. use_template_subject sends no subject override, so the provider uses the subject of the same template as the body. Each email also has a threading header. Gmail therefore no longer puts the invoices and reminders of one customer in a single conversation. Wallets get two changes. expand[] gives you a wallet type and its automatic top-up configs in one call. Solvimon also compares a top-up threshold in the unit of the wallet balance. Draft pricing plan schedules, which the API got last release, now have a full editor in Desk. Price indexation has its own page. Two silent errors also stop: Solvimon validates filter values against the meter property type, and Desk reads the invoice payment status from payment_status. Editable meters from ingestion and a pass on the Desk buttons and sidebar complete the release.

Pricing

Filter values are checked against the meter property type A usage-based product item can filter on a meter property. Before, Solvimon did not check the filter value against the type of the property. For example, Solvimon accepted EQUALS 1hello1 on a NUMBER property. The filter then matched no events, and the item stayed at zero usage. There was no indication of the cause. Solvimon now validates each value on a NUMBER meter property when you configure the item. An invalid value gives a values.{index} error that names the value and the property. STRING and ENUM properties do not change.

Fixes

bug-fix
  • Duplicate conditions on pricing item configs now fail validation. Before, a PATCH could add two configs with the same meter property conditions. Solvimon also compared a nested condition group only with its sibling groups, and not with its parent group. A child group could therefore repeat a condition of its parent group. Two configs can no longer claim the same usage. See Filtering on a meter property.

Wallets and credits

Expand the wallet type and the automatic top-up configs on a wallet GET /v1/wallets and GET /v1/wallets/{id} accept expand[]. There are two expansions. wallet_type_id gives you the full wallet_type. auto_top_up_configs gives you the automatic top-up configs of that wallet. Before, you needed three calls to get a wallet with its denomination and its top-up rules. You now need one call.

Get a wallet with its type and top-up configs
$curl "https://test.api.solvimon.com/v1/wallets/{id}?expand[]=wallet_type_id&expand[]=auto_top_up_configs" \
> -H "X-API-KEY: <apiKey>"

The same expansions apply if you get the wallet through the customer balance call. Use the nested key: POST /v1/customers/{id}/wallets/balance?expand[]=wallet_balances.wallet_id&expand[]=wallet_balances.wallet.wallet_type_id.

Fixes

bug-fix
  • Solvimon now compares the automatic top-up threshold in the unit of the wallet balance. Before, a credit wallet with a threshold in a currency compared two different units. The balance never crossed the threshold, and the wallet never topped up. The configuration gave no indication of the cause. Solvimon now converts the threshold before it makes the comparison.

Subscriptions

Draft schedules in Desk You can now build and release draft pricing plan schedules from the subscription screen. The API got them last release. You add a schedule as a draft, and you can edit it while it is a draft. You then activate it from the row actions or the context menu. The schedule list shows which schedules are drafts. You can therefore see a pending renegotiation, and you do not mistake it for the current terms. Activation obeys the permissions of the API. A user who cannot activate a draft sees a disabled action, and does not get an error on save.

Pricing plans on a schedule are collapsible The pricing plan and its connected pricings on a subscription or quote schedule are now a card. You can collapse the card. A subscription with several schedules stays easy to read. You do not scroll past pricing detail that you do not need.

Select or deselect a whole pricing group Multi-select pricing groups on subscription and quote schedules now have a control that selects and deselects all pricings. Before, you enabled each pricing in the group with a separate click. This is the usual case if you sell a plan in full.

Index a subset of revenue items If you apply price indexation to revenue items, a percentage is no longer necessary on each item. If you leave an item empty, Solvimon does not index that item. You can therefore raise one revenue item, and not enter a value for the other items. The API accepted a partial set before this change, but the form did not.

Invoices

Fixes

bug-fix
  • Desk now reads the invoice payment status from payment_status, and no longer from the deprecated paid flag. If payment_status is not present, Desk uses paid. Desk now shows each status between unpaid and paid, for example PARTIALLY_PAID. Before, Desk showed these statuses as “not paid”.
  • The status icon on an invoice usage report request no longer spins after the request is DONE. Before, the label showed “Done”, but the icon continued to spin.

Workflows

Use the subject defined in the email template Before, a send-email workflow action had an optional subject. If you did not set it, Solvimon used a hard-coded English subject. You could not complete a localized email. The body came from the localized template, but the subject did not. use_template_subject sends no subject override, so the provider uses the subject of the template that it renders. The default is true if the action has no subject. An action that has a subject continues to send it. You cannot use the two fields together. If you set both fields, Solvimon rejects the request with a validation error on use_template_subject. To use the subject of the template, remove the subject. See Subject lines.

Each email starts its own conversation Each workflow email now has an X-Entity-Ref-ID header. The value is unique to that email, and comes from the action and the trigger. Some mail clients group messages by this header. Gmail put the invoices and reminders of one customer in a single conversation. It then hid the most recent message behind the older messages. Each email now starts its own conversation. See Threading.

Fixes

bug-fix
  • The execution table for workflow actions now also shows the PENDING and NOT_EXECUTED statuses. NOT_EXECUTED shows that the conditions of the action did not apply. PENDING shows that the action has not run. See Execution statuses.

Meters and events

Edit a meter created during ingestion Before, you could use a meter from dynamic meter creation, but you could not examine it. It was only a name in a dropdown. The Show meter action on the meter dropdown now opens a side panel. In the panel you can see the meter, and make its values and properties required. You can also add new values and properties, and add more values to an existing ENUM property. You can therefore make a meter from your event stream into a deliberate definition. You do not create the meter again.

Reporting

Reporting metrics show their aggregation A reporting metric on a revenue item becomes read-only after you set it. Before, the read-only state showed only the name of the meter. Two revenue items with the same meter and different aggregations looked the same. You could not see a mistake. The state now shows the aggregation with the meter, for example SUM of Amount.

Integrations

A link that creates a new quote version The create new quote version action is now also available as a link. An external system can send a user directly into a new version of a quote. The Salesforce quotes integration uses this link. The user starts the new version from the opportunity, and does not first find the quote in Desk.

Desk

Consistent action buttons Action groups now use one pattern in all screens. One action is a single primary button. Two actions are a primary button and a secondary button. Three or more actions are a primary button and a context menu. The context menu always has the horizontal ellipsis icon. An action no longer moves between a row of buttons and a hidden menu on different screens.

A sidebar section with one page is a link A sidebar parent with only one visible child is now a link, and no longer an expander. The link has the name of that child page. Product catalog is now Products. Payments keeps its own name, and does not show the child name “Overview”. Usage metering also changed: Files is now a tab and not a submenu, and Reprocessing is under Insights.

Clearer labels on the wallet balance box The wallet balance box on a customer now shows correct labels. The first figure is “Available balance”. This is the open balance, which is the balance minus the reserved amount. The second line gives the name of the wallet type, and no longer repeats the word “Balance”. You can also create a credit and use it in one step. “Save and create wallet” on the credit panel saves the credit type. It then opens the wallet panel with that credit type selected.

Fixes

bug-fix
  • You can now edit a wallet workflow after you create it. Before, you could only create and delete it.
  • The parent customer list on the customer form no longer includes archived customers. You cannot connect a hierarchy to a customer that you retired.
  • Desk now shows products in the display order of the catalog.
  • Desk no longer shows a separator next to a quantity if the unit name is empty.
  • The date range selector no longer shows an arrow between the two fields. The fields now have the labels “Start date” and “End date”.
  • Smaller interface corrections: the payments side panel is now wide enough to read. A long shopper reference truncates, and does not break the layout. The buttons in each group have the same size. Desk hides the “Manage entitlements” action for a product that has no features.