How to delete all companies or contacts? - hubspot

I'm using the free HubSpot CRM for now. I wrote some scraping code and through the API added over 17k companies and 4k contacts.
There were some errors due to an incomplete understanding of some of the API calls and now I'd like to wipe everything out and start over.
I realize I could run the "Get Recently Created Companies" and for each of the 20 it returns run the delete company API call, then loop it until no companies exist, however this seems like something I shouldn't have to write code to accomplish.
I checked the Academy but the examples showed an interface that didn't match what I see, so it's either outdated or meant for a different version of HubSpot than I have. Didn't find much on Google either.
Anyone else know of an easy solution for this?

HubSpot developer here. I just checked with the folks who run the Contacts and Companies APIs – the best option you have right now is to contact support.
I know that's not the answer you're looking for. We're working on improving things, but it's not there yet.

Ran into this issue myself, needing to delete 8k test the marketing team had generated when we were still playing around with features. Had to reach out to customer support a few times to get the answer as it's not at all intuitive.
On this help page they say that you can mass delete contacts by adding them to a list, using Select All, and then Delete. This doesn't work in cases such as mine though as the pagination only allows you to see up to 100 contacts at a time.
The secret step for now is that you have to go down to the bottom right corner and click on "View the old list manager" (black square button with two arrows that's just to the side of the Help button). In this view Select All really does select every contact in the list so that you can perform a batch delete (or other action) on them all at once.
Summary
Create new list with rules to add the Contacts you want to delete
Switch to the old list manager view (button on bottom right)
Select All
Delete
Tell the confirmation box that yes, you really know what you're doing
Hopefully HubSpot will update their help docs soon and re-add the ability to really select all list items in the new view before they completely remove the option to switch back the old view.

Related

Database structure for app to show random items once to users

I am trying to design an app (mobile + web) that displays random items stored in a database to the Users.
The issue I have is that I do not know how I should design such a database. The idea is that all users are logged in to use the app and that they get random items on the screens and can then swipe to the next one. The app should keep track of all the items that the user has already seen and never ever show them again. You could think of it as a similar app then Tinder but its not for dating.
I know how I should structure my database to store the items but I do not know what the best practice for such a use case would be. Should i create the complete items database for every new User and then delete the items from it that they have already seen? Or is there another (better) way to do this ? I can't really think of another way for now and my Project is stuck on this crucial part.
Many thanks in advance for any suggestions :)

VSTS Restrict access to sensitive work items

Foreword: I've searched around on this question a fair bit and found answers which are close to a solution, but not what I'm looking for. So here I am, and I hope someone can help me. I'm relatively new to VSTS, so be gentle (or at least constructive) ;P
The Question: I'm looking for a way to restrict access to specific tickets (NOT by ticket type) that contain NDA protected data, whilst keeping them in the same backlog and iterations as the rest of the tickets related to a project.
We have many different NDA protected customers, so whilst creating a new ticket type per NDA, and restricting access to this, could work, it's not the solution I'm looking for.
Alternatively, I'm barking up the wrong tree, and there is an entirely different and "better way" to support this use-case?
Edit 1 - More info: Let's say I have 1 backlog for a product. It contains only 2 work items. It's important there is only 1 backlog for planning and overview by a product owner.
One of the two work items contains sensitive information only half the development team should have visibility to. How do I keep both tickets in the same backlog and iterations, but hide the sensitive one from some team members?
Thanks in advance for your time!
Regarding permission of work items in a team project, you can set the permission in area and iteration scope, but can’t for specific work items.
So, you need to put these work items in different area and manage permission for this area. Simple steps:
Go to team project admin page
Work=>Areas
Click New/New child, to create a new area.
Click …=>Security, set the permission for the group(s) or user(s)
Click the default team’s settings => Areas
Click + Select areas to add that area in order to show related work items (in that area)

Solution for listening to file once/download

I have energyshop.se which is a small webshop im doing for a customer. She sells various stuff but she has meditations on .mp3 and on discs. The customers can choose to buy:
a disc which is then sent to their home address.
one listening to one part of a meditation or one listening to all parts in a meditation
some items are also available for download for another price.
So question is how do I solve this? We use PayPal at her site to make the payments and I know that after a payment I can redirect the users to a "thankyouforthepurhase"-page if I want to. That leads me to think that one option is to take the users to that page where they can download/listen, but I dont know how to "connect" the shopped item with the isplayed files to be downloaded and/or listene once too and how to limit this. I mean if the page is energyshop.se/thanks someone that have made the purchase can just copy that address and go straight there.
There is also a idea about codes in some way. If they make a purchase they get a code sent to them for download or listening, but how do I generate this code which has to be unique everytime and the password ha to change everytime someone has entered it so someone dont save the code as well.
Well im kinda out of ideas and not sure how to do this. I just wanna wrap this project up but I think I hve to solve this for her.
I guess the solution depends on how much control (or security) she feels is required. If all you need is a reasonable confidence that a user has paid, then you can be much more relaxed about the whole thing.
The 'thanks' page could easily provide the content in concert with the transaction id paypal will return - you can use this to control what is shown. If you're not too worried about a 'listen-once' item being replayed, or 'download' being downloaded a bunch of times then you can avoid a bunch of edge-case stuff (where download fails or listen-once feed dies halfway, etc) and simply serve links to content based on the transaction.
If its abused then you can put effort into locking down content, serving mp3 streams from one-time links, tracking downloads in a database etc, but that will cost significantly more (in both time and server resources) so if you can, try simple first :)

google finance api alternative for monitoring/modifying portfolio?

I used to use google finance to create portfolios/change them and then display them on my site but since its being removed I'm wondering if there's any good free alternatives?
Basically I have a program that creates different portfolios based on different factors(20 right now), so each of the 20 links on my site direct people to a page that displays the portfolios. I am looking for something that I can use to automatically update the portfolios.
If it helps, my site is basically a free tutorial site that helps people learn how to manage their own portfolios. There's different lessons and then using market data & news(which I already get) I automatically generate a sample portfolio to show them how everything comes together. I liked google finance because they could see all of google's data but they could also click around and dig deeper if they want.
Is there anything I can use to get this result?
I'm not sure I understand exactly what you want, but it sounds like #DirkEddelbuettel's BeanCounter will do what you need.
Or, if you're just looking for quotes see http://www.gummy-stuff.org/Yahoo-data.htm and http://developer.yahoo.com/yql/

How to decide whether to split up a VB.Net application and, if so, how to split it up?

I have 2 1/2 years experience of VB.Net, mostly self taught, so please bear with me if I seem rather noobish still and do not know some of the basics. I would recommend you grab a cup of tea before starting on this, as it appears to have got quite long...
I currently have a rather large application (VB.Net website) of over 15000 lines of code at the last count. It does not do retail or anything particularly complex like that - it is literally just a wholesale viewing website with admin frontend, catalogue / catalogue management system and pageview system.
I don't really know much about how .Net applications work in the background - whether they are all loaded on the same thread or if each has its own thread... I just know how to code them, or at least like to think I do... :-)
Basically my application is set up as follows:
There are two different areas - the customer area and the administration frontend.
The main part of the customer frontend is the Catalogue. The MasterPage will load a list of products but that's all, and this is common to all the customer frontend pages.
I tend to work on only one or several parts of the application at a time before uploading the changes. So, for example, I may alter the hierarchy of the Catalogue and change the Catalogue page to match the hierarchy change whilst leaving everything else alone.
The pageview database is getting really quite large and so it is getting rather slow when the application is first requested due to the way it works.
The application timeout is set to 5 minutes - don't know how to change it, I have even tried asking this question on here and seem to remember the solution was quite complex and I was recommended not to change it, but if a customer requests the application 5 minutes after the last page view then it will reload the application from scratch. This means there is a very slow page load whenever it exceeds 5 minutes of inactivity.
I am not sure if this needs consideration to determine how best to split the application up, if at all, but each part of the catalogue system is set up as follows:
A Manager class at the top level, which is used by the admin frontend to add, edit and remove items of the specified type and the customer frontend to retrieve a list of items of the specified type. For example the "RangeManager" will contain a list of product "Ranges" and will be used to interact with these from the customer frontend.
An Item class, for example Range, which contains a list of Attributes. For example Name, Description, Visible, Created, CreatedBy and so on. The form for adding / editing loops through these to display relevant controls for the administrator. For example a Checkbox for BooleanAttribute.
An Attribute class, which can be of type StringAttribute, BooleanAttribute, IntegerAttribute and so on. There are also custom Attributes (not just datatypes) such as RangeAttribute, UserAttribute and so on. These are given a data field which is used to get a piece of data specific to the item it is contained in when it is first requested. Basically the Item is given a DataRow which is stored and accessed by Attributes only when they are first requested.
When one item is requested from a specific manager is requested, the manager will loop through all the items in the database and create a new instance of the item class. For example when a Range is requested from the RangeManager, the RangeManager will loop through all of the DataRows in the Ranges table and create a new instance of Range for each one. As stated above it simply creates a new instance with the DataRow, rather than loading all the data into it there and then. The Attributes themselves fetch the relevant data from the DataRow as and when they're first requested.
It just seems a tad stupid, in my mind, to recompile and upload the entire application every time I fix a minor bug or a spelling mistake for a word which is in the code behind (for example if I set the text of a Label dynamically). A fix / change to the Catalogue page, the way it is now, may mean a customer trying to view the Contact page, which is in no way related to the Catalogue page apart from by having the same MasterPage, cannot do so because the DLL is being uploaded.
Basically my question is, given my current situation, how would people suggest I change the architecture of the application by way of splitting it into multiple applications? I mean would it be just customer / admin, or customer / admin and pageviews, or some other way? Or not at all? Are there any other alternatives which I have not mentioned here? Could web services come in handy here? Like split the catalogue itself into a different application and just have the masterpage for all the other pages use a web service to get the names of the products to list on the left hand side? Am I just way WAY over-complicating things? Judging by the length of this question I probably am, and it wouldn't be the first time... I have tried to keep it short, but I always fail... :-)
Many thanks in advance, and sorry if I have just totally confused you!
Regards,
Richard
15000 LOC is not really all that big.
It sounds like you are not pre-compiling your site for publishing. You may want to read this: http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx
Recompiling and uploading the application is the best way to do it. If all you are changing is your markup, that can be uploaded individually (e.g. changing some html layout in an aspx page).
I don't know what you mean here by application timeout, but if your app domain recycles every 5 minutes, then that doesn't seem right at all. You should look into this.
Also, if you find yourself working on various different parts of the site (i.e. many different changes), but need to deploy only some items in isolation, then you should look into how you are using your source control tools (you are using one, aren't you?). Look into something like GIT and branching/merging.
Start by reading:
Application Architecture Guide